成功解决Python3版UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0x90 in position 614: ordinal not in
成功解决Python3版UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in
解决问题
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')
哈哈,大功告成!