Отправляет email-рассылки с помощью сервиса Sendsay

[prg] python. Определение кодировки

Здравствуйте, уважаемые!

Написал приложение, которое работает как широкоизвестный LKFManager020
для записи скаченных rar-файлов книг с ресурса av3715.ru и с сайта
Самарской библиотеки на карту памяти.

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

Для тестирования написал программку, которая показывает кодировку
LGK-файлов.

Оказалось, где текстовый редактор показывает кодировку 866 (oem -
русская), python показывает IBM866, а иногда вообще какие-то вычурные
кодировки.

Для определения использовал модуль chardet и метод UniversalDetector, а
также попробовал метод detect(), который ошибок показывает ещё больше.

Переписал своё приложение таким образом:

1. В режиме чтения бинарного файла 'rb' (в текстовом вообще открываться
не хочет) открываю lgk-файл, читаю первую строку и определяю кодировку.

2. Второй раз Открываю lgk-файл в режиме чтения, но с указанием
определённой на предыдущем шаге кодировки.

Ситуация поменялась, из 27 книг, корректно отображаются больше 20, но
по-прежнему файлы с кодировками Windows-1251 или 866 (oem - русская) оба
метода python определяют кодировку как Windows-1253 болгариен, IBM866
или скажем, MacCyrillic.

Подскажите, что-нибудь с этим можно поделать?? Может быть всё упирается
в возможности модуля chardet?

с уважением

Грызунов Александр, Самара

Ответить   Tue, 3 Jan 2023 18:08:38 +0400 (#3692768)