Python2和3中 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

在加載文件時,python可能出現 ‘ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)的問題。對應不同版本的python,有不同的解決方案。

python2
Python在進行編碼方式之間的轉換時,會將 unicode 作爲“中間編碼”,但 unicode 最大隻有128那麼長,所以這裏當嘗試將 ascii 編碼字符串轉換成”中間編碼” unicode 時由於超出了其範圍,就報出瞭如上錯誤。將Python的默認編碼方式修改爲utf-8即可,在py文件開頭加入以下代碼:

import sys
reload(sys) 
sys.setdefaultencoding('utf-8')

python3
在python3中,sys.setdefaultencoding(‘utf-8’)已被禁用,將導入文件代碼加上encoding=’bytes’則可解決:

x = pickle.load(open("./data/coco/word2vec.p","rb"), encoding='bytes')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章