&#34; utf8&#34; \ x96&#34;不会在<somefile.pl>的第--321行和第34行映射到Unicode; Perl </somefile.pl>中的错误

时间:2011-08-05 04:51:13

标签: perl unicode utf-8

我正在设置Perl应用程序。我收到了这个错误。 “utf8”\ x96“未映射到Unicode” 任何人都可以让我知道原因和解决方案。我错过了任何配置,还是我的安装问题?

以下是代码:

open(FILE,"<:encoding(UTF-8)",$self->{BASEDIR}.$self->{FILENAME}) || die "could not open file $basedir$filename - $!";

3 个答案:

答案 0 :(得分:7)

字符0x96不是有效的UTF-8编码。在0x80之上有一个代码点块,在UTF-8中,编码2或3字节字符的开头。

您正在阅读的输入不能是UTF-8,很可能是Latin1或CP1252。

你需要将输入数据转换为UTF-8,但是人们在Perl中这样做(自从我做任何Perl以来已经很长时间了,并且在我编写Perl时它默认不使用UTF-8: - )

答案 1 :(得分:6)

我怀疑你认为用UTF-8编码的东西实际上并不是用UTF-8编码的。

答案 2 :(得分:1)

只是将这些信息放在那里以防将来帮助某人。

如果您使用的是Microsoft产品,则可能是由非美国字符(欧洲,中国等)引起的。例如,如果有人向您发送了一份您需要处理的Excel数据电子表格并以.csv格式保存,那么如果未正确保存,这些字符可能会超出utf-8范围。

幸运的是,至少在Excel for Mac v.15中,可以将这些数据和“另存为”特别是 CSV UTF-8 文件 - 它放在选项列表中。这是与其他CSV文件选项分开的选项。这会将非美国字符转换为UTF-8字符集并解决此问题。