pip install chardet
# 或下載源碼 python setup.py install
import chardet
result = chardet.detect(byte_string)
# 返回字典: {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
print(result['encoding'])
print(result['confidence'])
import urllib.request
import chardet
resp = urllib.request.urlopen('https://www.google.cn/')
raw = resp.read()
print(chardet.detect(raw))
# {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
import chardet
with open('test.txt', 'rb') as f:
# 讀取前幾 KB 足夠,無需讀全文件
sample = f.read(8192)
result = chardet.detect(sample)
print(result['encoding'])
注意:readlines() 返回列表不可直接檢測,需用 read() 或 readline()。
from chardet.universaldetector import UniversalDetector
detector = UniversalDetector()
with open('large.log', 'rb') as f:
for line in f:
detector.feed(line)
if detector.done:
break
detector.close()
print(detector.result)
適合大文件,可提前終止,節省內存與時間。
| 編碼 | 適用場景 |
|---|---|
| UTF-8 | 現代 Web、國際化項目首選 |
| GB2312 / GBK / GB18030 | 中文舊系統、Windows 簡體環境 |
| Big5 | 繁體中文舊系統 |
| ISO-8859-1 | 西歐語言、HTTP 默認 |
confidence < 0.7 視為不可靠,需人工干預或嘗試常見編碼;open(encoding=...) 讀寫,統一使用 UTF-8 存儲。