天天看點

中文字元亂碼問題簡單解決 python

使用python2進行中文文本的時候,由于編碼的問題,會出現亂碼。

原因就是,python内部使用unicode進行字元的處理,但我們輸入進去的字元編碼可能是各式各樣的。

是以需提前對輸入文本進行decode操作。但是decode需要指定解碼的類型比如,gbk,gb2312等,需要對文本進行判斷。python中有内置子產品可以檢視chardet

import chardet

text = open(fileName,'r').read()

print chardet.detect(text)
           

然後根據查詢的結果進行解碼。

但遇到的問題就是,查詢的結果是gb2312,但是解碼還是出錯。

這時我們要清楚一個問題,字元集的大小問題

GB2312,GBK,GB18030,是相容的,包含的字元個數,以此更多,可以寫成:

GB2312 < GBK < GB18030
           

這樣,python中再遇到中文亂碼問題時,可以通過字元集的大小進行實驗。即:

、設定gb2312為解碼方式,如果解碼失敗;
    text = text.decode('gb2312')
、設定gbk為解碼方式,如果解碼失敗;
    text = text.decode('gbk')
、設定gb18030為解碼方式,如果失敗;
        text = text.decode('gb18030')
、此方法無效,請google其他方法。
           

注意

在最後寫入檔案時,一定要用encode進行編碼操作。
text = text.encode('utf8')