2012-01-20 7 views
2

나는 정리하려고하는 유니 코드 바이트로 가득 찬 정말 엉터리 파일을 가지고있다.Perl이 유니 코드 바이트를 올바르게 해석하도록 만드는 방법?

ブラック 
roler coaster 
digital social party 
big bellie 
cornacopia 
\xd0\xb7\xd1\x83\xd0\xb1\xd0\xbd\xd0\xb0\xd1\x8f \xd1\x89\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0 

지금, 내가 뭘하려는 실제 유니 코드 텍스트로 모든 추한 바이트 포인트를 변환 할 수 있습니다 : 다음과 같이 파일의 몇 가지 예입니다. 그래서, 위는 다음과 같이 출력 될 것입니다 : 지금 같은 시간 동안 Perl로이 작업을 수행하는 방법에 대해 내 머리를 두드리는 있었어요

ブラック 
roler coaster 
digital social party 
big bellie 
cornacopia 
зубная щетка 

을, 나는 좋은 아이디어에서입니다. 네가 가진다면, 나는 그것을 듣고 싶다.

+1

당신이 "유니 코드 바이트"무슨 뜻입니까? "cornacopia"("cornucopia"라고 쓰여 있음, BTW)의 줄은 실제로 백 슬래시 문자를 포함합니까? 어떤 종류의 "진짜 유니 코드 텍스트"를 만들고 싶습니까 (UTF-8? UTF-16? 다른 것?) –

+0

예, 백 슬래시가 있습니다. 파일에있는 내용을 정확하게 붙여 넣었습니다. 그래서 "cornacopia"의 철자가 틀린 이유이기도합니다. 난 그냥 utf8로 변환 싶어요. – Eli

+0

[Encode :: Escape] (http://p3rl.org/Encode::Escape), [String :: Escape] (http://p3rl.org/String::Escape) - http://stackoverflow.com/questions/8740106/evaluation-escape-sequences-perl http://stackoverflow.com/questions/2660123/how-can-i-manually-interpolate-string-escapes-in-a-perl-string – daxim

답변

9

그것은 UTF-8

$ perl -E' 
    use open ":std", ":locale"; 
    use Encode qw(decode); 
    $_ = q{\xd0\xb7\xd1\x83\xd0\xb1\xd0\xbd\xd0\xb0\xd1\x8f }. 
     q{\xd1\x89\xd0\xb5\xd1\x82\xd0\xba\xd0\xb0}; 
    s/\\x(..)/chr hex $1/seg; 
    $_ = decode("UTF-8", $_); 
    say; 
' 
зубная щетка 
관련 문제