python亂碼解決之decode()與encode()函數與錯誤顯示加解決辦法

一、字符串編碼常用類型:utf-8,gb2312,cp936,gbk等。

python中,我們使用decode()和encode()來進行解碼和編碼

在python中,使用unicode類型作爲編碼的基礎類型。即

str ---- ( decode ) -----> unicode ----- ( encode )---->str

u = u'中文' #顯示指定unicode類型對象u
str = u.encode('gb2312') #以gb2312編碼對unicode對像進行編碼
str1 = u.encode('gbk') #以gbk編碼對unicode對像進行編碼
str2 = u.encode('utf-8') #以utf-8編碼對unicode對像進行編碼
u1 = str.decode('gb2312')#以gb2312編碼對字符串str進行解碼,以獲取unicode
u2 = str.decode('utf-8')#如果以utf-8的編碼對str進行解碼得到的結果,將無法還原原來的unicode類型

借鑑:https://www.cnblogs.com/evening/archive/2012/04/19/2457440.html

二、 python2.7運行出現的Unicode equal comparison failed to convert both arguments to Unicode - interpreting

錯誤原因:
uncode編碼警告:在unicode等價比較中,把兩個參數同時轉換爲unicode編碼失敗。中斷並認爲他們不相等。
這是由於編碼解碼不統一造成的坑
我們在腳本中統一指定編碼

python在安裝時,默認的編碼是ascii,當程序中出現非ascii編碼時,python的處理常常會報錯UnicodeDecodeError:
‘ascii’ codec can’t decode byte 0x?? in position 1: ordinal not in
range(128),python沒辦法處理非ascii編碼的,此時需要自己設置python的默認編碼,一般設置爲utf8的編碼格式。

在程序中加入以下代碼:即可將編碼設置爲utf8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

三、數據庫插入又有亂碼,這是因爲我的數據源與數據庫表的編碼方式不同,我們再轉換一下

'idc': ip_info['idc'].encode("utf-8"),
//出現編碼錯誤的地方直接用encode()函數重新編碼就好了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章