Python将ISO编码为UTF8

时间:2010-04-27 16:55:08

标签: python internationalization encoding

我正在尝试使用Python脚本(Python 2.5和PyPy)阅读我的电子邮件 我的一些结果不是ASCII,我得到这样的字符串:

  

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

有没有办法解码它并转换为utf-8以便我可以处理它? 我试过.decode('ISO-8859-7'),但我得到了相同的字符串

2 个答案:

答案 0 :(得分:5)

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来电以满足codecNone的情况(例如eh.decode_header('plain text')

答案 1 :(得分:1)

阅读MIME encodingBase64 encodingbase64 module将非常有用。