python3之chardet判断编码

本文介绍了如何使用Python的chardet库来检测未知编码的bytes数据,通过实例展示了chardet在不同编码下的检测结果及正确率,指出其检测结果可能存在误差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档:https://chardet.readthedocs.io/en/latest/supported-encodings.html
在处理一些不规范的第三方网页的时候,在不知道编码的情况下,对bytes做decode()可能会得到错误结果。chardet用来检测未知编码的bytes,通过检测结果转换成str。
安装:pip install chardet

判断编码并解码

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import chardet
>>> str1 = b"abc"
>>> str1
b'abc'
>>> chardet.detect(str1)  # windows系统下
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
>>> str1.decode('ascii')
'abc'
>>>
>>>
>>> str2 = "123".encode("gbk")
>>> str2
b'123'
>>> chardet.detect(str2)
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
>>> str2.decode('ascii')
'123'
>>> str2.decode('gbk')
'123'
>>>
>>>
>>> str3 = "中国".encode("gbk")
>>> str3
b'\xd6\xd0\xb9\xfa'
>>> chardet.detect(str3)
{'encoding': 'IBM855', 'confidence': 0.7679697235616183, 'language': 'Russian'}
>>> str3.decode("IBM855")
'ол╣Щ'
>>> str3.decode("GBK")
'中国'
>>>
>>>
>>> str4 =  '中国'.encode("utf8")
>>> str4
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> chardet.detect(str4)
{'encoding': 'utf-8', 'confidence': 0.7525, 'language': ''}
>>> str4.decode("utf8")
'中国'
>>>
>>>
>>> str5 = "中华人民共和国".encode("gbk")
>>> str5
b'\xd6\xd0\xbb\xaa\xc8\xcb\xc3\xf1\xb9\xb2\xba\xcd\xb9\xfa'
>>> chardet.detect(str5)
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}

confidence:检测结果的正确率。

由上面的例子可知chardet的检测结果存在一定的误差。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值