概述
Python提供了Unicode表示的str和bytes两种数据类型,并且可以通过encode()和decode()方法转换,前提是知道哪种编码。如果不知道,可以使用chardet来检测编码。安装
pip install chardet
- 语法
import chardet
file_path = "E:\\test.txt"
with open(file_path,"rb") as obj:
data = obj.read()
file_encoding = chardet.detect(data)
print(file_encoding) # {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
其中,encoding
为检测出的编码,confidence
为可信度, language
是语言。
另外一个例子:
>>> data = '离离原上草,一岁一枯荣'.encode('gbk')
>>> chardet.detect(data)
{'encoding': 'GB2312', 'confidence': 0.7407407407407407, 'language': 'Chinese'}
检测的编码是GB2312,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是74%,language字段指出的语言是'Chinese'。
注意:chardet支持检测的编码列表请参考官方文档Supported encodings。