我在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行
知道错误发生的原因吗?非常感谢。
答案 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