1. 程式人生 > >解決UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)

解決UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)

style 資料 spa 和數 cnblogs ref lib utf 其中

  今天做網頁到了測試和數據庫交互的地方,其中HTML和數據庫都是設置成utf-8格式編碼,插入到數據庫中是正確的,但是當讀取出來的時候就會出錯,原因就是Python的str默認是ascii編碼,和unicode編碼沖突,就會報這個標題錯誤。那麽該怎樣解決呢?

  通過搜集網上的資料,自己多次嘗試,問題算是解決了,在代碼中加上如下幾句即可。

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

  混淆了 python2 裏邊的 str 和 unicode 數據類型。

  1、你需要的是讓編碼用實際編碼而不是 ascii

  2、對需要 str->unicode 的代碼,可以在前邊寫上

import sys
reload(sys)
sys.setdefaultencoding(‘utf8′)

  把 str 編碼由 ascii 改為 utf8 (或 gb18030)

  3、python3 區分了 unicode str 和 byte arrary,並且默認編碼不再是 ascii

解決UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)