python自动检测文档内码

abloz 2010-03-14
2010-03-14

周海汉 /文

2010.3.14

python 内码检测模块chardet,是从firefox中移植的,判定正确率比较高。

下载地址:http://chardet.feedparser.org/

ubuntu下如果遇到ImportError: No module named chardet
可以通过如下的命令自动安装:

zhouhh@zhh64:~$ sudo apt-get install python-chardet

chardet.detect(buffer)会返回一个字典。

chardet.detect(rawdata)
{‘confidence’: 0.98999999999999999, ‘encoding’: ‘GB2312’}
其中confidence是可信度,encoding是编码。

下面是用法示例。


  1. #!/usr/bin/env python
  2. -- coding: UTF-8 --

  3. author ablozhou <a title=”” href=”http://blog.csdn.net /ablo_zhou” mce_href=”http://blog.csdn.net/ablo_zhou” target=”_blank”& gt;周海汉</a>

  4. ablozhou@gmail.com

  5. http://blog.csdn.net/ablo_zhou

  6. 2010.3.14

  7. import chardet
  8. import urllib
  9. if name == ‘main’:
  10. mydet = {
  11. ‘SHIFT_JIS’:’http://www.mankan.or.jp/’,
  12. ‘GB2312’:’http://g.cn/’,
  13. ‘Big5’:’http://www.programmer-club.com.tw/’,
  14. ‘UTF8’:’http://zh.wikipedia.org/’
  15. }
    1. for url in mydet.values():
  16. print url
  17. rawdata = urllib.urlopen(url).read()
  18. enc = chardet.detect(rawdata)
  19. print enc[‘encoding’]
  20. #!/usr/bin/env python # -- coding: UTF-8 -- # author ablozhou 周海汉 # ablozhou@gmail.com # http://blog.csdn.net/ablo_zhou # 2010.3.14 import chardet import urllib if name == ‘main’: mydet = { ‘SHIFT_JIS’:’http://www.mankan.or.jp/’, ‘GB2312’:’http://g.cn/’, ‘Big5’:’http://www.programmer-club.com.tw/’, ‘UTF8’:’http://zh.wikipedia.org/’ } for url in mydet.values(): print url rawdata = urllib.urlopen(url).read() enc = chardet.detect(rawdata) print enc[‘encoding’]

执行:

python encdet.py
http://zh.wikipedia.org/
utf-8
http://www.mankan.or.jp/
SHIFT_JIS
http://g.cn/
GB2312
http://www.programmer-club.com.tw/
Big5


如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源