В дефолтной сборке XML::Parser’а отсутствует enc-файл для кодировки windows-1251. Поэтому XML::Parser ругается на XML-файлы, в начале которых указана кодировка windows-1251.
Как создать требуемый enc-файл для любой кодировки?
Очень просто.
- Идем на ftp://ftp.unicode.org/Public/MAPPINGS/ и находим требуемую кодировку. Для windows-1251 это будет ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT. Скачиваем этот файл.
- Устанавливаем (если ещё не установлен) модуль XML::Encoding.
$ make_encmap windows-1251 CP1251.TXT >windows-1251.xml- Открываем windows-1251.xml и редактируем первую строку. Дописываем свойство expat=’yes’.
$ compile_encoding windows-1251.xml$ sudo cp windows-1251.enc /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi/XML/Parser/Encodings/(в вашем случае путь может отличаться от моего)

2 comments ↓
Это, конечно чудно, но как быть пользователю виртуального хостинга, в котором так же нет enc-файл для кодировки windows-1251?
Попросить хостера установить нужный файл.
Leave a Comment