3

我从包含半 utf8 编码的文件中读取行,我希望将其转换为 Perl 内部表示以进行进一步操作。

file.in(纯 ASCII):

MO\\xc5\\xbdN\\xc3\\x81
NOV\\xc3\\x81

这些应该转化为 MOŽNÁ 和 NOVÁ。

我加载这些行并将它们升级为正确的 utf8 表示法,即。\\xc5\\xbd -> \x{00c5}\x{00bd}. 然后我想把它升级$line并让 perl 在内部表示它:

for my $line (@lines) {
    $line =~ s/x(..)/x{00$1}/g;
    eval { $l = "$line"; };
}

不幸的是,没有成功。

4

1 回答 1

5
use File::Slurp qw(read_file);
use Encode qw(decode);
use Encode::Escape qw();

my $string =
    decode 'UTF-8',             # octets → characters
    decode 'unicode-escape',    # \x → octets
    decode 'ascii-escape',      # \\x → \x
    read_file 'file.in';

从下往上阅读。

于 2013-07-12T11:53:03.857 回答