Python:gb2312编解码器无法解码字节

时间:2016-09-27 07:08:35

标签: python encoding gb2312

我收到了来自收到邮件的字符编码字符串。在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/)。 有什么建议我做错了吗?感谢

1 个答案:

答案 0 :(得分: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或您的程序也不能这样做。

对于一个粗略的比喻,你可以在这里看到哪些是m?s?但不是? L·纳克? Sαδ+ê???。