如何使Perl正确解释Unicode字节?

时间:2012-01-20 21:10:46

标签: perl unicode utf-8

我有一个非常糟糕的文件,我正在尝试清理unicode字节。该文件中的一些示例如下:

ブラック
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

现在,我想做的是将所有那些丑陋的字节点转换为真正的unicode文本。因此,上述内容将输出为:

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

我一直在敲打我的头,反对如何在Perl中这样做一个小时,而且我的想法很好。如果你有一个,我很乐意听到它。

1 个答案:

答案 0 :(得分: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;
'
зубная щетка