Perl:无法打开 encmap ascii.enc

发布于 2024-11-01 15:13:04 字数 213 浏览 2 评论 0原文

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

它曾经有效,但今天我收到以下错误消息: 无法打开 encmap ascii.enc: 没有这样的文件或目录 在 /usr/local/lib/perl5/site_perl/5.8.9/mach/XML/Parser.pm 第 187

行 知道为什么会发生错误吗?多谢。

I'm running perl 5.8.9 in FreeBSD 7.4. And I'm using the XML/Parser.pm module.

It used to work, but today I got the following error message:
Couldn't open encmap ascii.enc:
No such file or directory
at /usr/local/lib/perl5/site_perl/5.8.9/mach/XML/Parser.pm line 187

Any idea why the error happens? Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℡Ms空城旧梦 2024-11-08 15:13:04

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

Expat 具有以下内置编码:`UTF-8`、`ISO-8859-1`、`UTF-16` 和
`US-ASCII`。编码可以通过 XML 声明来设置
编码属性或通过 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

ASCII is natively supported by expat, so it shouldn't be looking for a .enc file for it.

Expat has built-in encodings for: `UTF-8`, `ISO-8859-1`, `UTF-16`, and
`US-ASCII`. Encodings are set either through the XML declaration
encoding attribute or through the ProtocolEncoding option to XML::Parser
or XML::Parser::Expat.

For encodings other than the built-ins, expat calls the function
load_encoding in the Expat package with the encoding name. This function
looks for a file in the path list @XML::Parser::Expat::Encoding_Path, that
matches the lower-cased name with a '.enc' extension. The first one it
finds, it loads.

Maybe the XML document specified

encoding="ASCII"

instead of

encoding="US-ASCII"

The library doesn't recognise that they should be treated the same.

$ 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文