Perl: не удалось открыть encmap ascii.enc - PullRequest
2 голосов
/ 15 апреля 2011

Я использую Perl 5.8.9 во FreeBSD 7.4.И я использую модуль XML / Parser.pm.

Раньше он работал, но сегодня я получил следующее сообщение об ошибке: Не удалось открыть encmap ascii.enc: такого файла или каталога в / usr нет/local/lib/perl5/site_perl/5.8.9/mach/XML/Parser.pm строка 187

Есть идеи, почему возникает ошибка?Большое спасибо.

1 Ответ

3 голосов
/ 15 апреля 2011

ASCII изначально поддерживается экспатом, поэтому он не должен искать для него файл .enc.

Expat имеет встроенные кодировки для: `UTF-8`,` ISO-8859-1`, `UTF-16` и `US-ASCII`. Кодировки устанавливаются либо через декларацию XML атрибут кодировки или через параметр ProtocolEncoding для XML :: Parser или XML :: Parser :: Expat.
Для кодировок, отличных от встроенных, expat вызывает функцию load_encoding в пакете Expat с именем кодировки. Эта функция ищет файл в списке путей @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...