在打开文件时,经常会遇到编码错误UnicodeDecodeError,确实有点棘手
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 56: illegal multibyte sequence
有没有一种方式可以快速检测文件的编码方式
本文章介绍一种自动检测文件/网页编码的第三方工序chardet
chardet
引入
pip install chardet
使用
普通用法
读取文本
导入chartdet后,
使用chardet.detect
检测二进制内容,
返回编码方式,及可信度
>>> import chardet
>>> with open("demo.txt", "rb") as f:
... print(chardet.detect(f.read()))
...
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
读取网页
>>> import chardet
>>> import urllib.request
>>> rawdata = urllib.request.urlopen('http://blog.csdn.net/').read()
>>> chardet.detect(rawdata)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
高级用法
识别的文件内容很大时,普通方式就回存在效率,性能上的不足。chardet提供了高级用法
示例:
from chardet.universaldetector import UniversalDetector
detector = UniversalDetector()
with open("demo.txt", "rb") as f:
for line in f.readlines():
detector.feed(line)
if detector.done:
break
detector.close()
print(detector.result) # {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
更多用法:链接