2010-05-10 5 views
4

어떻게 Perl을 사용하여 파일을 utf-8 형식으로 변환합니까? 변환 된 파일이 utf-8 형식인지 여부를 어떻게 확인합니까? Encode : 펄은 이미 그 자체로 문자 인코딩 라이브러리와 함께 제공하기 때문에 변환 할하려면Perl을 사용하여 파일을 UTF8 형식으로 변환

+0

을 사용할 수 있습니다 UTF에 대한

my $str = "A string in Perl internal format ...."; my $octets = encode("utf-8",$str,Encode::FB_CROAK); 

확인합니다. 확실히 더 빨리 응답하지 않습니다. – ThiefMaster

+0

http://stackoverflow.com/questions/1612244/how-can-i-convert-an-input-file-to-utf-8-encoding-in-perl 참조 –

답변

1

는 같은 Text::Iconv이 필요하지 않은 iconv 라이브러리에 Text::Iconv

use Text::Iconv; 
    $converter = Text::Iconv->new("fromcode", "tocode"); 
    $converted = $converter->convert("Text to convert"); 
+0

감사 마크 ...하지만 나는 알아낼 수 없었다. 이 라인을 정확히 사용하는 방법. 나는 UTF8 형식으로 저장해야하는 ANSI FORMAT 파일을 가지고 있습니다. utf8 명령을 사용할 때 결과 파일은 여전히 ​​ANSI 형식 (메모장을 사용하여 검사 함)입니다. 어떤 도움? – xyz

+0

@xyz, 기본적으로 파일 내용을 읽고 언급 한 daxim으로 Iconv 또는 내장 Encode 함수로 변환하여 다시 저장해야합니다. 그러나 파일의 ascii 문자가 <= 0x7F 인 경우 ascii가 유효한 utf8이기 때문에 출력 파일도 동일하게 표시됩니다. – YOU

+0

@xyz : ANSI는 형식이 아니며 Microsoft에서 인코딩 집합에 사용하는 이름입니다. 대부분 "Windows-1252"인코딩을 가지고 있으므로 "windows-1252"에서 "UTF-8"로 변환 해보십시오. –

3

설치 바인딩에 봐. 그 중 일부는 piconv이고, iconv(1) 작업군입니다. 파일을 UTF-8로 일괄 변환하는 데 사용하십시오. ANSIwindows-125? 인코딩 그룹의 멍청한 이름입니다. 대부분 windows-1252에 인코딩 된 파일이있을 것입니다. 예 :

piconv -f windows-1252 -t UTF-8 < input-file > output-file 

메타 데이터가 누락 된 경우 휴리스틱을 사용하여 파일 내용의 인코딩을 결정해야합니다. I have been recommendingEncode::Detect.

1

문자열에 따라 다릅니다. 업로드 된 파일이라면이 코드가 도움이 될 것입니다. utf-8로 변환 한 텍스트의 텍스트 일 ​​경우 (utf-8에서 작업하고 있기 때문에) 문제를 발견하게됩니다.

내가 일반적으로 사용

사용 인코딩 :: 추측

내 $의 ENC = guess_encoding ($ 문자열);

다음 위의 코드와 함께, 내가 할 :

사용 텍스트 ::의 iconv;
$ converter = Text :: Iconv-> new ($ enc, "utf-8");
$ converted = $ convert-> convert ("변환 할 텍스트");

FYI UTF-8에서 여기에서 찾을 수있다 :

http://www.fileformat.info/info/charset/UTF-8/list.htm?start=1024

http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024&number=1024&utf8=string-literal&unicodeinhtml=dec

+0

해당 모듈은 Encode :: Guess (http://search.cpan.org/dist/Encode/lib/Encode/Guess.pm)입니다. –

1

를 쉽게 다른 인코딩

예컨대을로 인코딩 할 수 인코딩 모듈을 사용함; 당신이 당신의 질문 제목에 캡의 양을 줄일하시기 바랍니다 기능을

is_utf8($str,Encode::FB_CROAK) 
관련 문제