首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python chardet 庫檢測字符編碼:安裝、用法與最佳實踐

     編輯:更多程式設計知識

安裝


pip install chardet
# 或下載源碼 python setup.py install

核心 API


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()。

進階:UniversalDetector 流式檢測


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 默認

最佳實踐建議

  1. 優先指定編碼(如 HTTP Header、HTML meta、文件 BOM),避免猜測;
  2. 檢測時僅讀取文件頭 4–8 KB,平衡準確度與性能;
  3. confidence < 0.7 視為不可靠,需人工干預或嘗試常見編碼;
  4. Python 3 內置 open(encoding=...) 讀寫,統一使用 UTF-8 存儲。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved