1. 程式人生 > >成功解決Python3版UnicodeDecodeError 'ascii' codec can't decode b

成功解決Python3版UnicodeDecodeError 'ascii' codec can't decode b

               

解決問題

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

解決過程

1、最近在做深度學習的專案,在呼叫GitHub上的檔案時,想利用mnist_loader的資料集,沒想到執行以後出現了錯誤UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)


2、於是,筆者就各種百度啊,,各種度,國內外的,但是答案差不多都有一種,就是新增以下程式碼


3、可是,筆者在python中各種加入,各種嘗試,還把utf8改為gbk試了好幾次,又出現了這個錯誤,我去去去!


4、筆者又不厭其煩的跑去百度,各種度,國內外的,最後發現了預料中的一件事,在Python 3.x中不好使了提示name reload’ is not defined,在3.x中已經被斃掉了被替換為
import importlib
importlib.reload(sys)
並且,Python 3預設是utf8編碼格式,我了各種去,心裡一萬隻草泥馬,同樣是python,python2和python3咋就差別這麼大呢!還要自行車?要啥自行車,啊啊啊!

5、於是,筆者陷入了沉思,也就是睡著了,哈哈,開玩笑,繼續谷歌、百度啦,直到發現了下邊這句話,

6、皇天不負有心人,哈哈,終於改對啦,謝謝小夢dream,感謝小夢這位仁兄,將

training_data, validation_data, test_data = cPickle.load(f)

改為即可,training_data, validation_data, test_data = cPickle.load(f,encoding='bytes')

7、哈哈,成功!搞定!努力總是又收穫的,繼續努力啦!

解決方法

將training_data, validation_data, test_data = cPickle.load(f)
改為即可,training_data, validation_data, test_data = cPickle.load(f,encoding='bytes')