Python字符串编码检测
生活随笔
收集整理的這篇文章主要介紹了
Python字符串编码检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串編碼產生的亂碼著實讓人頭疼……
關于字符串和編碼的知識,可以參考廖雪峰大大的博客字符串和編碼
那么有沒有辦法完全正確的檢測字符集編碼呢?答案是:沒有!參考how-to-determine-the-encoding-of-text
但是在Python有兩種還比較簡單的方法:
1、chardet
chardet包提供detect方法
安裝pip install chardet
使用chardet.detect方法(該方法傳入的參數是bytes或bytearray,不支持str)
檢測出的編碼是utf-8,注意到還有個confidence字段,表示檢測的概率是0.99(即99%)。
data = '離離原上草,一歲一枯榮'.encode('utf-8') chardet.detect(data) # 輸出 {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}2、UnicodeDammit
傳說比chardet更可靠,說是安裝chardet后結果更好
安裝pip install bs4
使用(同時支持bytes 和 str,str的時候編碼是None)
from bs4 import UnicodeDammitdata = '離離原上草,一歲一枯榮'.encode('utf-8') dammit = UnicodeDammit(data) print(dammit.unicode_markup) print(dammit.detector.chardet_encoding) # 輸出 離離原上草,一歲一枯榮 utf-8data = '離離原上草,一歲一枯榮' dammit = UnicodeDammit(data) print(dammit.unicode_markup) print(dammit.original_encoding) # 輸出 離離原上草,一歲一枯榮 None為什么UnicodeDammit好用,因為UnicodeDammit 已經綜合考慮了chardet 的結果,chrdet 是學習了大量的文本,然后再來算出最有可能的編碼方式
UnicodeDammit 是
1. 先從申明的編碼方式嘗試解析
2. 嘗試從開頭的幾個字符開始解析
3. chardet 檢測出來的推薦編碼
4. utf-8 解析
5. windows-1252 解析
?
總結
以上是生活随笔為你收集整理的Python字符串编码检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux more命令查找关键字,Li
- 下一篇: websocket python爬虫_p