Я читаю текстовый файл, который, я думаю, закодирован в utf-8.Некоторые строки могут быть декодированы только как latin-1.Я бы сказал, что это очень плохая практика, но, тем не менее, я должен с этим справиться.
У меня есть следующие вопросы:
Во-первых: как я могу «угадать» кодировку файла?Я пробовал enca
, но на моем компьютере:
enca --list languages
belarussian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U
bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113
czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic
croatian: CP1250 ISO-8859-2 IBM852 macce CORK
hungarian: ISO-8859-2 CP1250 IBM852 macce CORK
lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic
polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK
russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr
slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK
slovene: ISO-8859-2 CP1250 IBM852 macce CORK
ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr
chinese: GBK BIG5 HZ
none:
Этого недостаточно для обнаружения латино-1.Кстати: как я могу увеличить список доступных языков для enca
?
Второе: можно ли частично закодировать файл в разных кодировках?Я думаю, что с технической точки зрения это очень возможно: просто используйте разные кодеки для разных частей файла.Вы когда-нибудь видели это?Как бы вы справились с чтением такого файла?Будете ли вы пытаться декодировать каждую строку с другой кодировкой?Как бы вы пошли об этом?Я на самом деле использую python, и пример обработки множественного кодирования был бы признателен.
В-третьих: как вы обычно относитесь к файлам, для которых вы не знаете кодировку, которую они используют?Я часто сталкиваюсь с этой проблемой при загрузке текстовых файлов из разных источников.Обычно это CSV-файлы, экспортируемые из электронных таблиц (я полагаю, в Excel), но в зависимости от параметров экспорта они используют ту или иную кодировку, без подсказок о том, какой из них был выбран, поэтому я вынужден угадать.