在加載文件時,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')