2010-04-19 6 views
4

필자는 유니 코드 코드 포인트 (\ u5315 \ u4e03 \ u58ec \ u4e8c \ u4e0a \ u53b6 \ u4e4b)를 가지고 있는데, 이들을 나타내는 실제 문자로 변환해야합니다.유니 코드 코드 포인트 ( uXXXX)를 Perl의 문자로 변환하려면 어떻게해야합니까?

가장 간단한 방법은 무엇입니까?

+0

그냥 그들을 인쇄? – BalusC

+0

아니요, 변환 할 코드를 찾고 있습니다. – Peterim

+0

어디로 변환 하시겠습니까? 지금까지 파일을로드하고 코드 포인트를 파싱하고 실제 글리프/문자로 바꾸고 파일을 저장하는 것처럼 정말 들리는군요. – BalusC

답변

0
use JSON::XS 
print JSON::XS->new->decode('{"a":"\u5315\u4e03\u58ec\u4e8c\u4e0a\u53b6\u4e4b"}')->{a} 
+0

당신이 제안한 것을 정확히 시도했지만, 불행히도 그것은 어떤 결과도 내주지 못했습니다 ... – Peterim

1
perl -C -E'say"\x{5315}\x{4e03}\x{58ec}\x{4e8c}\x{4e0a}\x{53b6}\x{4e4b}"' 

또는 재미 방법

perl -C -E'say map chr hex, qw(5315 4e03 58ec 4e8c 4e0a 53b6 4e4b)' 
3

가끔 난 그냥 pack 사용하십시오 :

binmode STDOUT, ':utf8'; 

my $string = '\\u5315\\u4e03\\u58ec\\u4e8c\\u4e0a\\u53b6\\u4e4b'; 

$string =~ s/\\u(....)/ pack 'U*', hex($1) /eg; 

print $string; 
관련 문제