我从包含半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"; };
}
不幸的是,没有成功。
答案 0 :(得分: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';
从下往上阅读。