與伺服器進行資料交換時,尤其是資料中含有中文時,要注意中文的編碼問題。要選擇伺服器接受的編碼方式,否則會造成顯示亂碼。
經驗:實驗室伺服器的資料庫,中文用utf-8編碼,但我提交的是gbk編碼的中文,結果出現亂碼:
基本能解決大陸上的編碼問題。
簡單解釋一下:
首先判斷傳入的mes是否是unicode編碼,若是,直接encode成目標編碼;
然後分別用utf-8, gbk, gb2312, gb18030, utf-16嘗試解碼,若解碼不成功,程式丟擲異常,跳到except中,進行下乙個編碼嘗試;
若解碼成功,則encode成目標編碼,函式返回;
若五個編碼方式都丟擲了異常,則丟擲異常「unknown charset」。
但該**有乙個bug,並沒有對使用者的輸入的編碼方式encoding進行過濾,若使用者誤輸入,則也會丟擲『unknown charset』異常。
參考資料:
微博: 浙大宋博
Python的中文編碼問題
基本編碼 1 當沒有給定任何編碼提示的時候,python預設使用ascii作為它的標準編碼格式。所以對於中文這樣的非asciii編碼的字元,不指定編碼格式時就會報錯。2 python裡面string型別和unicode型別是兩種不同的型別,string型別的編碼格式就是原始碼的編碼格式,而unico...
python中文編碼問題
在 python 中對中文進行處理的時候,往往涉及到編碼轉換的問題,通常使用以下三種編碼格式 utf 8 gbkunicode 國內用的比較多的是 gbk格式,unicode 是乙個很好的編碼方案,將世界各國的語言進行了統一的編碼,美國人後來覺得自己吃了大虧,於是又搞了一種變長編碼的 utf 8 的...
python中文編碼問題
為什麼會報錯 unicodeencodeerror ascii codec can t encode characters in position 0 1 ordinal not in range 128 本文就來研究一下這個問題。字串在python內部的表示是unicode 編碼,因此,在做編碼轉...