Python 2.7 - 无法正确解码电子邮件 subject-header 行

Python 2.7 - Unable to correctly decode email subject-header line

我正在使用 Python 2.7,我正在尝试正确解码电子邮件的主题 header 行。电子邮件的来源是:

Subject: =?UTF-8?B?VGkgw6ggcGlhY2l1dGEgbGEgZGVtbz8gU2NvcHJpIGFsdHJlIG4=?=

我使用 email.header 库中的函数 decode_header(header),结果是:

[('Ti \xc3\xa8 piaciuta la demo? Scopri altre n', 'utf-8')]

'xc3\xa8' 部分应该匹配 'è' 字符,但不正确 decoded/showed。 另一个例子:

Subject: =?iso-8859-1?Q?niccol=F2_cop?= =?iso-8859-1?Q?ernico?=

结果:

[('niccol\xf2 copernico', 'iso-8859-1')]

如何获取正确的字符串?

正在获得正确的字符串。它只是编码(在第一种情况下使用 UTF-8,在第二种情况下使用 iso-8895-1);您需要对其进行解码以获取实际的 unicode 字符串。

例如:

>>> print unicode('Ti \xc3\xa8 piaciuta la demo? Scopri altre n', 'utf-8')
Ti è piaciuta la demo? Scopri altre n

或者:

>>> print unicode('niccol\xf2 copernico', 'iso-8859-1')
niccolò copernico

这就是为什么您要返回 header 数据 编码的原因。