我得到了一个文件,(可能)用 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
. 在 Perl 中是否有任何简单的方法可以做到这一点?