2024-04-24 10:12:08 发布
网友
如果我试图用python2.6.5(和2.7)中的decode_header()解析这个字符串,就会出现HeaderParseError。这里是字符串的repr():
'=?iso-8859-1?B?QW5tZWxkdW5nIE5ldHphbnNjaGx1c3MgU_xkcmluZzNwLmpwZw==?='
此字符串来自包含JPEG图片的mime电子邮件。雷鸟罐头 解码文件名(包含德语变音符号)。在
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失败时进行适当的猜测。在
decode_header
我将“breaked”称为邮件代理,因为不需要在消息头中转义+或{}:它不是一个URL,为什么不使用典型的字符集?在
+
Python的base64编码字符串的字符集与邮件代理的字符集似乎不兼容:
Python使用Wikipedia article表示的字符集(即0-9,A-Z,A-Z,+,/)。在同一篇文章中,还包括了一些备选方案(包括这里的下划线);但是,下划线的值很模糊(根据备选方案,它的值是62或63)。在
我不知道Python可以做些什么来猜测bwrken邮件代理的意图;所以我建议您在
decode_header
失败时进行适当的猜测。在我将“breaked”称为邮件代理,因为不需要在消息头中转义}:它不是一个URL,为什么不使用典型的字符集?在
+
或{相关问题 更多 >
编程相关推荐