2015-10-16 118 views
2

我需要非ASCII字符轉換爲用perl程序Unicode值:轉換非ASCII到Unicode字符

,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,

= \ U + 1D6B2(&#x1D6B2)....

上述字符是雙敲擊或fraktur但是我無法將這些轉換爲Unicode值。如果有任何模塊可用,請指出。

有人可以幫助我在這一個。

my @arry = qw(                                            ); 

foreach my $sng(@arry) 
{ 
    my $newsng = ord($sng); 
    #print "$sng\t$newsng\t"; 
    $newsng = sprintf("%x", $newsng); 
    #print "$newsng\n"; 
    $incnt=~s/$sng/$newsng/esg || print "NOT: $sng\n"; 
} 

print $incnt; 

它不打印unicode值。

回答

1
use utf8; 
use feature 'unicode_strings'; 

printf "%x\n", ord(''); 
# => 1D6B2 

有關Perl中Unicode的更多詳細信息:perlunicode

+0

感謝您的編碼。但是我無法打印文本文件中的值。我不知道我的錯在哪裏。在摘要中加入... – ssr1012

+0

添加'use encoding'utf-8';'。 – Amadan

+0

ð「」,它代替了一些帆船。 – ssr1012

2

您需要確保您的程序預期輸入爲utf8字節,並且輸出文件句柄期望接收utf8字節。

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 
# Automatically decode data from filehandles 
use open ':encoding(utf8)'; 

# Tell STDOUT we'll be writing utf8 
binmode STDOUT, ':utf8'; 

open my $utf8_fh, '<', 'utf8.txt' or die $!; 

while (<$utf8_fh>) { 
    chomp; 

    foreach my $c (split) { 
    printf "$c: %x\n", ord($c); 
    } 
} 

輸出:

: 1d49c 
: 1d49e 
: 1d49f 
: 1d4a2 
: 1d4a5 
... 
+0

感謝您的親切幫助。它工作正常。 – ssr1012