python base64解碼 Python和SQLite問題,怎么解決?
Python和SQLite問題,怎么解決?如果中文數(shù)據(jù)存儲在SQLite數(shù)據(jù)庫的某個字段中,然后通過查詢語句和相關(guān)的字符串操作進行檢索,常常會出現(xiàn)類似unicode decodeerror的錯誤提示,
Python和SQLite問題,怎么解決?
如果中文數(shù)據(jù)存儲在SQLite數(shù)據(jù)庫的某個字段中,然后通過查詢語句和相關(guān)的字符串操作進行檢索,常常會出現(xiàn)類似unicode decodeerror的錯誤提示,表示某類代碼無法轉(zhuǎn)換。這個問題的原因是Python默認使用Unicode來處理SQLite3的文本類型(varchar類型也是如此,因為在SQLite中,varchar實際上是文本)。Python在數(shù)據(jù)庫中存儲中文時使用類似于GBK的代碼。在獲取它時,它會嘗試將文本數(shù)據(jù)轉(zhuǎn)換為Unicode,從而導(dǎo)致錯誤。另一個不容易發(fā)現(xiàn)的錯誤是,數(shù)據(jù)庫中存儲的中文是用Base64編碼的,用Python取出時不會有錯誤。但是,在對SQLite3中取出的其他文本字段進行Base64解碼和字符串拼接后,會出現(xiàn)編碼轉(zhuǎn)換錯誤。很難找到問題的原因,可以解碼其他文本字段,例如“AAA”。Encode(“GBK”)編碼為GBK碼,但不提倡這種方法。更好的方法是:在Python連接到SQLite數(shù)據(jù)庫之后,設(shè)置如下:conn=SQLite3。連接(“…”)連接文本Factory=STR另外,為了避免Python代碼中硬編碼的中文字符串的問題,除了添加#-*-編碼:utf-8-*-還將Python源代碼的編碼設(shè)置為UTF-8 import sysreload(sys)sys.setdefaultencode設(shè)置默認編碼(“utf8”)