Python 从 iso-8859-5 解码
当我通过 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
你的输入是经过 quoted-printable 编码的文本。你可以使用 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
现在将再次是上面给出的字符串。