Кодировка Python ISO в UTF8 - PullRequest
       21

Кодировка Python ISO в UTF8

3 голосов
/ 27 апреля 2010

Я пытаюсь прочитать свои электронные письма, используя скрипт Python (Python 2.5 и PyPy). Некоторые из моих результатов не в ASCII, и я получаю строки вроде этого:

=? ISO-8859-7? B? 0OXm7 / Dv8d / hIPP07 + 0gyuno4enx / u3h? = '

Есть ли способ декодировать его и преобразовать в utf-8, чтобы я мог его обработать?Я пытался .decode ('ISO-8859-7'), но я получил ту же строку

Ответы [ 2 ]

5 голосов
/ 27 мая 2010
import email.header as eh

unicode_data= u''.join(
    str_data.decode(codec or 'ascii')
    for str_data, codec
    in eh.decode_header('=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?='))
# unicode_data now is u'Πεζοπορία στον Κιθαιρώνα'

Вы должны работать с unicode_data здесь. Однако, если вам (кажется, вам) нужна строка в кодировке UTF-8, вы можете:

utf8data= unicode_data.encode('utf-8')

Обновление: я изменил вызов .decode для обслуживания для случаев, когда codec равен None (например, eh.decode_header('plain text'))

1 голос
/ 27 апреля 2010

Читайте о MIME-кодировке и Base64-кодировке . Модуль base64 будет полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...