如何使用 Python 检测文本文件的编码

Python 中有一个有用的包 - chardet,它有助于检测文件中使用的编码。实际上没有程序可以 100%放心地说使用了哪种编码 - 这就是为什么 chardet 给编码文件编码的概率最高的原因。Chardet 可以检测以下编码:

  • ASCII,UTF-8,UTF-16(2 种变体),UTF-32(4 种变体)
  • Big5,GB2312,EUC-TW,HZ-GB-2312,ISO-2022-CN(繁体中文和简体中文)
  • EUC-JP,SHIFT_JIS,CP932,ISO-2022-JP(日文)
  • EUC-KR,ISO-2022-KR(韩文)
  • KOI8-R,MacCyrillic,IBM855,IBM866,ISO-8859-5,windows-1251(西里尔文)
  • ISO-8859-2,windows-1250(匈牙利语)
  • ISO-8859-5,windows-1251(保加利亚语)
  • windows-1252(英文)
  • ISO-8859-7,windows-1253(希腊语)
  • ISO-8859-8,windows-1255(视觉和逻辑希伯来语)
  • TIS-620(泰国语)

你可以使用 pip 命令安装 chardet :

pip install chardet

之后你可以在命令行中使用 chardet:

% chardetect somefile someotherfile
somefile: windows-1252 with confidence 0.5
someotherfile: ascii with confidence 1.0

或者在 python 中:

import chardet    
rawdata = open(file, "r").read()
result = chardet.detect(rawdata)
charenc = result['encoding']