首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

好用的python库推荐—Chardet字符编码探测器

在处理字符串时,常常会遇到不知道字符串是何种编码,如果不知道字符串的编码就不能将字符串转换成需要的编码。面对多种不同编码的输入方式,是否会有一种有效的编码方式?chardet是一个非常优秀的编码识别模块。

安装chardet

如果安装了Anaconda,chardet就已经可用了。否则,需要在命令行下通过pip安装:

$ pip install chardet

官方地址:http://pypi.python.org/pypi/chardet

使用chardet

当我们拿到一个bytes时,就可以对其检测编码。用chardet检测编码,只需要一行代码:

>>> chardet.detect(b'Hello, world!')

{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}

检测出的编码是ascii,注意到还有个confidence字段,表示检测的概率是1.0(即100%)。

我们来试试检测GBK编码的中文:

>>> data = '哈哈哈,我是中文'.encode('gbk')

>>> chardet.detect(data)

{'encoding': 'GB2312', 'confidence': 0.7407407407407407, 'language': 'Chinese'}

检测的编码是GB2312,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是74%,language字段指出的语言是'Chinese'。

对UTF-8编码进行检测:

>>> data = '哈哈哈,我是中文'.encode('utf-8')

>>> chardet.detect(data)

{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

我们再试试对日文进行检测:

>>> data = '蒼井そら'.encode('euc-jp')

>>> chardet.detect(data)

{'encoding': 'EUC-JP', 'confidence': 0.99, 'language': 'Japanese'}

可见,用chardet检测编码,使用简单。获取到编码后,再转换为str,就可以方便后续处理。

chardet支持检测的编码列表:

Big5, GB2312/GB18030, EUC-TW, HZ-GB-2312, and ISO-2022-CN (繁体和简体中文)

EUC-JP, SHIFT_JIS, and ISO-2022-JP (日文)

EUC-KR and ISO-2022-KR (韩文)

KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, and windows-1251 (俄文)

ISO-8859-2 and windows-1250 (匈牙利闻)

ISO-8859-5 and windows-1251 (保加利亚文)

ISO-8859-1 and windows-1252 (西欧文)

ISO-8859-7 and windows-1253 (希腊语)

ISO-8859-8 and windows-1255 (Visual and Logical Hebrew)

TIS-620 (泰语)

UTF-32 BE, LE, 3412-ordered, or 2143-ordered (with a BOM)

UTF-16 BE or LE (with a BOM)

UTF-8 (with or without a BOM)

ASCII

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200505A05Z3O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券