将Python编码从ISO转换为UTF8

3
我正在尝试使用Python脚本(Python 2.5和PyPy)阅读我的电子邮件。但是,有些结果不是ASCII编码,我得到了像这样的字符串:
=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?=
是否有任何方法可以解码并转换为UTF-8以便我可以处理它?我尝试了.decode('ISO-8859-7'),但我得到了相同的字符串。
2个回答

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'))。

@Tzotziou:+1 但请不要使用 unicodedata 作为“变量名”;它是一个模块。 - John Machin

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接