解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(12
方案一:
今天做網頁到了測試和數據庫交互的地方,其中HTML和數據庫都是設置成utf-8格式編碼,插入到數據庫中是正確的,但是當讀取出來的時候就會出錯,原因就是Python的str默認是ascii編碼,和unicode編碼沖突,就會報這個標題錯誤。那么該怎樣解決呢?
通過搜集網上的資料,自己多次嘗試,問題算是解決了,在代碼中加上如下幾句即可。
import sys reload(sys) sys.setdefaultencoding('utf8') http://docs.python.org/howto/unicode.html 這個是python的unicode編碼API文檔,英文好的同學可以看一下,加深理解。參考資料:http://groups.google.com/group/python-cn/browse_thread/thread/f48ef745452740f6?pli=1
點擊打開鏈接
------------------------------------------------------------------------------------------------------------------------
混淆了 python2 里邊的 str 和 unicode 數據類型。
0.
你需要的是讓編碼用實際編碼而不是 ascii
1.
對需要 str->unicode 的代碼,可以在前邊寫上
import sys
reload(sys)
sys.setdefaultencoding(‘utf8′)
把 str 編碼由 ascii 改為 utf8 (或 gb18030)
2.
python3 區分了 unicode str 和 byte arrary,并且默認編碼不再是 ascii
**********************************************************************
方案二:
在Windows平臺下,安裝python模塊時,報如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9: ordinal not in range(128)
解決方法:
修改mimetypes.py文件,路徑位于python的安裝路徑下的Lib\mimetypes.py文件。在import下添加如下幾行:
| 1 2 3 | if sys.getdefaultencoding() != 'gbk': reload(sys) sys.setdefaultencoding('gbk') |
總結
以上是生活随笔為你收集整理的解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(12的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构设计师能力模型
- 下一篇: 【Python实现数据可视化】创建3D柱