python中的HeaderParseError

2024-04-24 10:12:08 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我试图用python2.6.5(和2.7)中的decode_header()解析这个字符串,就会出现HeaderParseError。这里是字符串的repr():

 '=?iso-8859-1?B?QW5tZWxkdW5nIE5ldHphbnNjaGx1c3MgU_xkcmluZzNwLmpwZw==?='

此字符串来自包含JPEG图片的mime电子邮件。雷鸟罐头 解码文件名(包含德语变音符号)。在

^{pr2}$

Tags: 字符串电子邮件图片iso解码jpegheadermime
1条回答
网友
1楼 · 发布于 2024-04-24 10:12:08

Python的base64编码字符串的字符集与邮件代理的字符集似乎不兼容:

>>> from email.header import decode_header
>>> a='QW5tZWxkdW5nIE5ldHphbnNjaGx1c3MgU_xkcmluZzNwLmpwZw=='
>>> decode_header(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  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,为什么不使用典型的字符集?在

相关问题 更多 >