누구나 유니 코드 인식 문자열 프로그램에 대한 코드 샘플이 있습니까? 프로그래밍 언어는 중요하지 않습니다. 나는 본질적으로 유닉스 명령 "문자열"과 같은 것을 원하지만, 유니 코드 텍스트 (UTF-16 또는 UTF-8)에서 작동하여 영어 문자와 구두점을 사용한다. (나는 영어 문자 만 신경 쓰며 다른 알파벳은 신경 쓰지 않는다.)유니 코드 인식 문자열 (1) 프로그램
감사합니다.
누구나 유니 코드 인식 문자열 프로그램에 대한 코드 샘플이 있습니까? 프로그래밍 언어는 중요하지 않습니다. 나는 본질적으로 유닉스 명령 "문자열"과 같은 것을 원하지만, 유니 코드 텍스트 (UTF-16 또는 UTF-8)에서 작동하여 영어 문자와 구두점을 사용한다. (나는 영어 문자 만 신경 쓰며 다른 알파벳은 신경 쓰지 않는다.)유니 코드 인식 문자열 (1) 프로그램
감사합니다.
그냥 사용 하시겠습니까, 아니면 코드를 고집하는 이유가 무엇입니까?
내 데비안 시스템에서는 strings
명령을 통해이 작업을 수행 할 수 있습니다. 맨페 제외 제목 :
--encoding=encoding
Select the character encoding of the strings that are to be found. Possible values for encoding are: s = single-7-bit-byte characters (ASCII, ISO 8859,
etc., default), S = single-8-bit-byte characters, b = 16-bit bigendian, l = 16-bit littleendian, B = 32-bit bigendian, L = 32-bit littleendian. Useful
for finding wide character strings.
편집 : 확인 : 확인. 나는 C#을 모르므로 약간 털이 있지만 기본적으로 0과 영문자가 교대로 반복되는 시퀀스를 검색해야합니다.
byte b;
int i=0;
while(!endOfInput()) {
b=getNextByte();
LoopBegin:
if(!isEnglish(b)) {
if(i>0) // report successful match of length i
i=0;
continue;
}
if(endOfInput()) break;
if((b=getNextByte())!=0)
goto LoopBegin;
i++; // found another character
}
리틀 엔디안에서 작동합니다.
나는 비슷한 문제가있어서 "strings -e ...
"을 시도했지만 수정 폭 너비 문자 인코딩 옵션을 찾았습니다. (UTF-8 인코딩은 가변 폭입니다).
기본적으로 아스키 외부 문자는 여분의 strings
옵션이 필요합니다. 여기에는 거의 모든 영어가 아닌 문자열이 포함됩니다.
그럼에도 불구하고 "-e S
"(단일 8 비트 문자) 출력에는 UTF-8 문자가 포함됩니다.
입력 파일에 "strings -e S ... | iconv ...
"을 적용하는 매우 간단한 (의견이있는) Perl 스크립트를 작성했습니다.
나는 그것이 특정한 제한을 위해 그것을 튜닝하는 것이 쉽다라고 생각한다. 사용법 : 어떤 상황에서 utf8strings [options] file*
#!/usr/bin/perl -s
our ($all,$windows,$enc); ## use -all ignore the "3 letters word" restriction
use strict;
use utf8::all;
$enc = "ms-ansi" if $windows; ##
$enc = "utf8" unless $enc ; ## defaul encoding=utf8
my $iconv = "iconv -c -f $enc -t utf8 |";
for (@ARGV){ s/(.*)/strings -e S '$1'| $iconv/;}
my $word=qr/[a-zçáéíóúâêôàèìòùüãõ]{3}/i; # adapt this to your case
while(<>){
# next if /regular expressions for common garbage/;
print if ($all or /$word/);
}
는,이 방법은 몇 가지 여분의 쓰레기를 생산하고 있습니다.
영어와 UTF-8의 경우 문자열 (1)은 이미 정상이어야합니다. – mouviciel
언어가 중요하지 않은 경우 문자열 유틸리티 자체의 소스를 확인하는 것이 어떻습니까? –