Кодировки кириллических символов
Я парсил ost файл из outlook и некоторые сообщения он дешифровал неверно. Грубо говоря при расшифровки через utf-8 получается это "дНАПШИ ДЕМЭ", а должен быть "Добрый день".
Я пробовал разные кодировки но ни одна из них не сработала.
encoded_text = b'\xd0\xb4\xd0\x9d\xd0\x90\xd0\x9f\xd0\xa8\xd0\x98 \xd0\x94\xd0\x95\xd0\x9c\xd0\xad'
encodings = ['utf-8', 'windows-1251', 'koi8-r', 'cp866', 'iso-8859-5', 'mac-cyrillic']
for encoding in encodings:
try:
decoded_text = encoded_text.decode(encoding)
print(f"Кодировка {encoding}: {decoded_text}")
except Exception as e:
print(f"Ошибка декодирования для кодировки {encoding}: {e}")
Вывод был следующим:
Кодировка utf-8: дНАПШИ ДЕМЭ
Ошибка декодирования для кодировки windows-1251: 'charmap' codec can't decode byte 0x98 in position 11: character maps to <undefined>
Кодировка koi8-r: п╢п²п░п÷п╗п≤ п■п∙п°п╜
Кодировка cp866: ╨┤╨Э╨Р╨Я╨и╨Ш ╨Ф╨Х╨Ь╨н
Кодировка iso-8859-5: аДаЈаааа
Ответы (2 шт):
Copylot на мой запрос "Проверь все кодировки для русского языка для текста "\xd0\xb4\xd0\x9d\xd0\x90\xd0\x9f\xd0\xa8\xd0\x98 \xd0\x94\xd0\x95\xd0\x9c\xd0\xad", а также их последовательное применение. Должен быть осмысленный текст на русском языке."
выдал следующее:
"Извините за недоразумение. Давайте разберемся с кодировкой текста “дНАПШИ ДЕМЭ”.
- UTF-8: Если мы предположим, что текст был закодирован в UTF-8, то он будет выглядеть как “дНАПШИ ДЕМЭ”. Это осмысленный текст на русском языке.
- Windows-1251 (CP1251): Если мы рассмотрим кодировку Windows-1251 (CP1251), то текст “дНАПШИ ДЕМЭ” будет выглядеть так: “АДРЕСЫ ДЕМЭ”.
- KOI8-R: В кодировке KOI8-R текст “дНАПШИ ДЕМЭ” будет выглядеть как “ТОМ ПОСТУПИЛ ХОРОШО”.
- ISO-8859-5: В кодировке ISO-8859-5 текст “дНАПШИ ДЕМЭ” будет выглядеть как “ТОМ ПОСТУПИЛ ХОРОШО”."
Так что друзья, вы ещё не знаете всех возможностей ИИ. :-)
Благодаря товарищам Nofate и Алексей Р чьи комментарии я не могу пометить как правильные ответ оказался прост. Текст кодировался и декодировался много раз в результате алгоритм его расшифровки выглядел следующим образом:
decoded_text = encoded_text.decode('utf-8').encode('koi8-r').decode('windows-1251')