Python的base64编码字符串的字符集与邮件代理的字符集似乎不兼容:>>> from email.header import decode_header
>>> a='QW5tZWxkdW5nIE5ldHphbnNjaGx1c3MgU_xkcmluZzNwLmpwZw=='
>>> decode_header(a)
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/email/header.py", line 108, in decode_header
raise HeaderParseError
email.errors.HeaderParseError
>>> a1= a.replace('_', '/')
>>> decode_header(a1)
[('Anmeldung Netzanschluss S\xecdring3p.jpg', 'iso-8859-1')]
>>> print _[0][0].decode(_[0][1])
Anmeldung Netzanschluss Südring3p.jpg
Python使用Wikipedia article表示的字符集(即0-9,A-Z,A-Z,+,/)。在同一篇文章中,还包括了一些备选方案(包括这里的下划线);但是,下划线的值很模糊(根据备选方案,它的值是62或63)。在
我不知道Python可以做些什么来猜测bwrken邮件代理的意图;所以我建议您在decode_header失败时进行适当的猜测。在
我将“breaked”称为邮件代理,因为不需要在消息头中转义+或{}:它不是一个URL,为什么不使用典型的字符集?在