Я получаю письма от IMAP с помощью Python и imaplib. В этом конкретном случае у меня проблема с адресами To:.Невозможно декодировать кодировку - Python и imaplib
Я извлекаю закодированное поле Кому: разделяю адреса, а затем пытаюсь их декодировать. У меня есть проблема с этой конкретной строкой. Я использую функцию decode_header Python для декодирования кодировки Quoted-Printable/Base64. Я начинаю с закодированными:
'=?utf-8?b?vmfzy28gugf0csoty2lv?= <[email protected]>'
Это должно быть Vasco Patrício <[email protected]>
(мое имя и адрес электронной почты). Как и ожидалось, decode_header возвращает набор закодированных подстрок и их кодировок, что приводит в массиве 2 кортежей:
[('\xbeg\xf3\xcbo \xba\x07\xf4r\xca-\xcbio', 'utf-8'), ('<[email protected]>', None)]
Однако, когда я пытаюсь декодировать первый кортеж, используя этот очень простой код:
for part in decoded_parts:
if part[1]:
part_text = part[0].decode(part[1])
else:
part_text = part[0]
я получить UnicodeDecodeError:
UnicodeDecodeError at /api/refresh/emails/
'utf8' codec can't decode byte 0xbe in position 0: invalid start byte
Я подтверждаю, что пытается расшифровать его с помощью результатов консоли в то же исключение.
Не предполагается ли decode_header возвращать действующие дезадаптируемые строки вместе с их кодировками?
Спасибо
Я вижу. Фактически я уменьшал регистр из-за обнаружения строк, например, для заголовка 'To:' он может быть 'to:', 'TO:' или любая перестановка. Таким образом, я был более низким, чтобы облегчить поиск. Я никогда не думал, что это сломает кодировку - и я никогда бы не подумал об этом сам. Спасибо за ценный вклад! –