对于未知编码的bytes,要把它转换成str,就需要知道该bytes的编码方式。我们可以用chardet这个第三方库来检测编码
1)直接检测bytes
>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
检测出的编码是ascii,confidence字段,表示检测的概率是1.0(即100%)
2)检测GBK编码的中文
>>> data = '离离原上草,一岁一枯荣'.encode('gbk')
>>> chardet.detect(data)
{'encoding': 'GB2312', 'confidence': 0.7407407407407407, 'language': 'Chinese'}
检测的编码是GB2312,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是74%,language字段指出的语言是'Chinese'。
s1是s2的超集
3、扩展文档
chardet支持检测的编码列表 (https://chardet.readthedocs.io/en/latest/supported-encodings.html)
原文地址:http://blog.51cto.com/12758568/2117158