【发布时间】:2012-08-01 07:07:07
【问题描述】:
我收到了一个(可能)以 Latin-1 (ISO 8859-1) 编码的文件,并且需要对它进行一些转换和数据挖掘。输出应该是 UTF-8 格式,我已经尝试了所有关于 Perl 编码转换的方法,但没有一个产生任何可用的输出。
我知道use utf8; 一开始就什么都不做。我尝试了Encode 包,看起来很有希望:
open FILE, '<', $ARGV[0] or die $!;
my %tmp = ();
my $last_num = 0;
while (<FILE>) {
$_ = decode('ISO-8859-1', encode('UTF-8', $_));
chomp;
next unless length;
process($_);
}
我尝试了我能想到的任何组合,还加入了binmode(STDOUT, ":utf8");、open FILE, '<:encoding(ISO-8859-1)', $ARGV[0] or die $!; 等等。结果要么是混乱的变音符号,要么是像\xC3 is not a valid UTF-8 character 这样的错误消息,甚至是混合文本(有些是UTF-8,有些是Latin-1)。
我想要的只是一种简单的方法来读取 Latin-1 文本文件并通过 print 在控制台上生成 UTF-8 输出。在 Perl 中是否有任何简单的方法可以做到这一点?
【问题讨论】:
-
Perl 不知道,如何正常使用 utf :(
标签: perl utf-8 character-encoding latin1