Python 2.7 - 无法正确解码电子邮件主题标题行

时间:2016-08-24 14:32:07

标签: python python-2.7 email decode string-decoding

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

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

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

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

'xc3 \ xa8'部分应与'è'字符匹配,但未正确解码/显示。 另一个例子:

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

结果:

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

如何获得正确的字符串?

1 个答案:

答案 0 :(得分: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

这就是你回复标题数据编码的原因。