0

我收到的邮件中有一个单词编码的字符串。在 Python3 中解析编码的单词时,出现异常

“gb2312”编解码器无法解码位置 18-19 中的字节:非法多字节序列

make_header方法提出。

from email.header import decode_header, make_header

hdr = decode_header("""=?gb2312?B?QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg?=""")
make_header(hdr)

在在线工具中解析编码字符串没有问题(http://dogmamix.com/MimeHeadersDecoder/)。有什么建议我做错了吗?谢谢

4

1 回答 1

1

错误消息告诉您位置 18-19中的字节对于此编码无效。

decode_header简单地提取一堆字节和一个编码。 make_header实际上尝试在该编码中解释这些字节,但失败了,因为这些字节在该编码中无效。

相似地,

bash$ base64 -D <<<'QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg' |
> iconv -f gb2312 -t utf-8
A V 网 盘 出 售   
iconv: (stdin):1:18: cannot convert

所以错误信息只是告诉你这个数据是无效的。如果没有更多信息,我们无法判断数据应该是什么,Python 或您的程序也无法做到这一点。

对于一个粗略的比喻,您可以 g??ss 在这里是 m?ss?ng,但不是在 ?h?? l?ng?? 咩咩咩咩?

于 2016-09-27T07:47:52.693 回答