Python解码来自iso-8859-5

时间:2014-06-06 10:59:56

标签: python python-2.7 encoding decode

当我通过python email.parser.Parser解析我的电子邮件时,我有很多这样的字符串:

=?ISO-8859-5?Q?=C0=D5=D5=E1=E2=E0_=BF=DB=D0=E2=D5=D6=D5=D9_?=

如何使用python将其解码为utf-8?

1 个答案:

答案 0 :(得分:0)

您的输入是带引号的可打印编码文本。您可以使用模块quopri来处理:

import quopri

incode = '=?ISO-8859-5?Q?=C0=D5=D5=E1=E2=E0_=BF=DB=D0=E2=D5=D6=D5=D9_?='
inencoding = incode[2:12]  # 'ISO-8859-5'
intext = incode[15:-2]
result = quopri.decodestring(intext).encode(inencoding)

结果将是

Реестр_Платежей 

在quoted-printable编码周围,你还有一个电子邮件标题格式,指定在应用quoted-printable解码后应解释字符串的字符编码。上面的示例代码将“手动”部分作为子字符串,但您也可以一步完成所有这些:

import email

[ (text, encoding) ] = email.header.decode_header(incode)
result = text.decode(encoding)

result现在将再次成为上面给出的字符串。