[Moscow.pm] определение кодировки файла

Dmitry Arsentiev dmarsentev на gmail.com
Чт Дек 11 05:30:44 PST 2008


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

Мои требования:
модуль должен устанавливается простым копированием *.pm файов
и понимать  DOS (CP866) и windows (CP1251) кодировки.

Нашёл в сети (к сожалению, не на CPAN) модуль, эту задачу решающий.
http://home.mts-nn.ru/~gosha/perl-scripts/Cyrillic/Read_me.txt
http://home.mts-nn.ru/~gosha/perl-scripts/index.html#Cyrillic
Автор - Игорь Окунев.


На CPAN тоже нашёл пару модулей (не считая модуль Андрея Шитова,
который (модуль, а не Андрей) решает немного другую задачу, или я не
до конца понял).

Вот они, эти модули:

1) Lingua::DetectCyrillic (автор - Алексей Руденко)
http://search.cpan.org/~rudenko/Lingua-DetectCyrillic-0.02/DetectCyrillic.pm#item_Unicode%3A%3AMap8

Всё отлично, только модуль зависит от других двух, которые,
чтобы поставить, надо компилировать. Пришлось отказаться.

2) Lingua::DetectCharset.pm (author - John Neystadt )
http://search.cpan.org/~jneystadt/cyrillic-1.05/Lingua/DetectCharset.pm
Не поддерживает определение DOS-кодировки.


PS Вот здесь есть могущие быть полезными ссылки
http://www.opennet.ru/prog/info/2062.shtml




4 июня 2008 г. 12:08 пользователь Ruslan Zakirov
<ruz на bestpractical.com> написал:
> Есть всем известный детектор в mozilla based браузерах. Про него есть
> пару статей:
> * http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
> - теория и анализ эффективности
> * http://www.mozilla.org/projects/intl/ChardetInterface.htm - краткое
> описание библиотеки
>
> Порты:
> * java - http://www.chatnsearch.com/chardet.html
> * python - http://chardet.feedparser.org/
> * perl - ???
>
> Для перла нет, но можно портировать, есть примеры на нескольких языках.
>
> 2008/6/3 Павел Тимонин <gg.error на gmail.com>:
>> Товарищи, как мне определить кодировку входящего файла? Я получаю его как
>> параметр в POST-запросе, и не знаю заранее в какой он кодировке. Программа
>> работает в utf8.
>>
>> я знаю про use Encode, и знаю как из любой кодировки сделать utf8, но не
>> знаю как определить :) копания в самом Encode не помогли моему пониманию.
>> хотел проверить функцию getEncoding, но она не работает. компилятор ругается
>> что ему не хватает Encoding::Alias, хотя он на месте. я его подключал (хотя
>> в Encode.pm в этой функции он подключается через require), всё равно не
>> работает.
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>
>
>
> --
> Best regards, Ruslan.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm