2016-08-24 2 views
0

Я использую Python 2.7, и я пытаюсь правильно декодировать заголовок заголовка сообщения. Источником электронной почты является:Python 2.7 - Невозможно правильно декодировать строку заголовка субъекта электронной почты

Subject: =?UTF-8?B?VGkgw6ggcGlhY2l1dGEgbGEgZGVtbz8gU2NvcHJpIGFsdHJlIG4=?= 

Я использую функцию decode_header (заголовок) из библиотеки email.header, и результат:

[('Ti \xc3\xa8 piaciuta la demo? Scopri altre n', 'utf-8')] 

'xc3 \ xa8' часть должна соответствовать символ 'è', но он неправильно декодирован/показан. Другой пример:

Subject: =?iso-8859-1?Q?niccol=F2_cop?= =?iso-8859-1?Q?ernico?= 

Результат:

[('niccol\xf2 copernico', 'iso-8859-1')] 

Как я могу получить правильную строку?

ответ

1

Вы: : Получение правильной строки. Он просто закодирован (с использованием UTF-8 в первом случае и iso-8895-1 во втором); вам необходимо декодировать его, чтобы получить фактическую строку юникода.

Например:

>>> print unicode('Ti \xc3\xa8 piaciuta la demo? Scopri altre n', 'utf-8') 
Ti è piaciuta la demo? Scopri altre n 

Или:

>>> print unicode('niccol\xf2 copernico', 'iso-8859-1') 
niccolò copernico 

Вот почему вы получите обратно как данные заголовка и кодировку.