Perl中正则表达式中格式错误的UTF-8字符错误

时间:2010-07-05 20:36:28

标签: regex perl utf-8

当我在XML :: Simple或Data :: Dumper中添加一些标量数据时,我出现了'格式错误的UTF-8字符'错误。在发生错误的行上有正则表达式。

Malformed UTF-8 character (fatal) at /usr/share/perl5/XML/Simple.pm line 1690.
Malformed UTF-8 character (fatal) at /usr/lib/perl/5.10/Data/Dumper.pm line 682.

目前我没能用一小段代码重现错误。

XML::Simple 2.18
Data::Dumper 2.124
perl v5.10.1

3 个答案:

答案 0 :(得分:2)

问题出现了,因为应用程序代码深处某处有Encode::_utf8_on标量,这不是一个合适的UTF-8字符串。

答案 1 :(得分:1)

您可以尝试通过Encoding::FixLatin管道传输数据。如果您遇到的'二进制'字节实际上是Latin-1字符,那么它们将被转换为有效的UTF8。如果它们确实是随机二进制字节,那么它们至少应该转换为随机(但有效)的UTF8字符: - )

答案 2 :(得分:0)

核心编码模块为Handling Malformed Data提供了便利。不过,我自己从未使用过它们。