python使用模块chardet判断字符编码

来源:互联网 发布:淘宝拒签后怎么处理 编辑:程序博客网 时间:2024/05/24 06:50

Python中chardet 用来实现字符串/文件编码检测模板

1、chardet下载与安装

chardet模块下载地址:http://pypi.python.org/pypi/chardet

下载完成之后解压文件,打开命令行窗口,切换到解压包所在文件夹,输入命令D:\Python34\python.exe   setup.py install,即可安装完成

2.chardet能够检测到的编码方式

chardet 模块可以检测以下编码:

  • ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
  • Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
  • EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
  • EUC-KR, ISO-2022-KR (Korean)
  • KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
  • ISO-8859-2, windows-1250 (Hungarian)
  • ISO-8859-5, windows-1251 (Bulgarian)
  • windows-1252 (English)
  • ISO-8859-7, windows-1253 (Greek)
  • ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
  • TIS-620 (Thai)


3.chardet模块使用

使用chardet模块判断字符编码使用detect()函数即可:

  1. >>> import chardet  
  2. >>> import urllib.request  
  3. >>> response=urllib.request('http://tool.cc/fuhao/')  
  4. >>> response=urllib.request.urlopen('http://tool.cc/fuhao/')  
  5. >>> html=response.read()  
  6. >>> chardet.detect(html)  
  7. {'confidence'1.0'encoding''UTF-8-SIG'}  
  8. >>> 

其中confidence表示精确度,1.0表示编码方式百分百是‘UTF-8-SIG’
我们可以通过获取encoding的值得到源代码的编码方式

>>> encode=chardet.detect(html)['encoding']
>>> print(encode)
UTF-8-SIG
>>>

获取编码方式之后直接使用编码方式进行解码就不会报错了

with open('E:\\test15.txt','w',encoding=encode) as f1:

    f1.write(html.decode(encode,'ignore'))

 

这样即使碰到一些其他的编码方式,即使不知道源代码的编码方式,也不会报错了

原创粉丝点击