UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)...

Error 發(fā)生環(huán)境:

  • Python 3.7
  • psycopg2 - 2.8.5

試過 reload(sys) 然后修改編碼(其實只對python2有用)、decode和encode(一般是處理讀文件時的問題,對本問題無效)等等方法,筆者查了一下午崩潰邊緣終于找到了病因!
解決方案在文末。

筆者在使用 psycopg2 進行 PostgreSQL 查詢時,遇到 UnicodeDecodeError 異常,已解決。


異常情況

上圖可以看到,在執(zhí)行查詢并fetch結(jié)果時,遇到了UnicodeDecodeError。
不過,只指定一 int 類型列作為返回時卻能正常范圍,所以推斷是因為范圍結(jié)果中的漢字導致錯誤。


正常情況

明確了可能的原因后,查看數(shù)據(jù)庫連接的編碼:

>>> conn.encoding
'SQLASCII'

這說明數(shù)據(jù)庫連接的編碼類型并不是utf8!

解決方案:conn.set_client_encoding('utf8') 一行代碼指定數(shù)據(jù)庫連接編碼類型即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容