Python 从 iso-8859-5 解码

1 投票
1 回答
640 浏览
提问于 2025-04-18 08:51

当我通过 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 现在将再次是上面给出的字符串。

撰写回答