Perl:无法打开encmap ascii.enc

时间:2011-04-14 20:29:43

标签: perl xml-parsing

我在FreeBSD 7.4中运行perl 5.8.9。我正在使用XML / Parser.pm模块。

它曾经工作,但今天我收到以下错误消息: 无法打开encmap ascii.enc: 没有相应的文件和目录  at /usr/local/lib/perl5/site_perl/5.8.9/mach/XML/Parser.pm第187行

知道错误发生的原因吗?非常感谢。

1 个答案:

答案 0 :(得分:3)

expat本身支持ASCII,因此它不应该为它寻找.enc文件。

Expat具有以下编码:`UTF-8`,`ISO-8859-1`,`UTF-16`,以及 `美国ASCII`。编码通过XML声明设置 encoding属性或通过XML :: Parser的ProtocolEncoding选项 或XML :: Parser :: Expat。
对于内置输入以外的编码,expat调用该函数 具有编码名称的Expat包中的load_encoding。这个功能 在路径列表@XML :: Parser :: Expat :: Encoding_Path中查找文件 将带有小号的名称与“.enc”扩展名匹配。第一个吧 发现,它加载。

可能指定了XML文档

encoding="ASCII"

而不是

encoding="US-ASCII"

图书馆不承认它们应该被视为相同。

$ perl -MXML::Parser -e'
   XML::Parser->new->parse(
      qq{<?xml version="1.0" encoding="$ARGV[0]"?><root/>});
' US-ASCII

$ perl -MXML::Parser -e'
   XML::Parser->new->parse(
      qq{<?xml version="1.0" encoding="$ARGV[0]"?><root/>});
' ASCII
Couldn't open encmap ascii.enc:
No such file or directory
 at .../XML/Parser.pm line 187