我正在设置Perl应用程序。我收到了这个错误。 “utf8”\ x96“未映射到Unicode” 任何人都可以让我知道原因和解决方案。我错过了任何配置,还是我的安装问题?
以下是代码:
open(FILE,"<:encoding(UTF-8)",$self->{BASEDIR}.$self->{FILENAME}) || die "could not open file $basedir$filename - $!";
答案 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字符集并解决此问题。