UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b

UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b

我使用的是 here 中的以下代码(稍作修改):

import _pickle as cPickle 

def unpickle(file):
    fo = open(file, 'rb')
    dict = cPickle.load(fo)
    fo.close()
    return dict

unpickle('data_batch_1')

当我 运行 代码时,如果我使用 Python 3.5.2:

,我会得到以下信息
Traceback (most recent call last):
  File "open_batch.py", line 10, in <module>
    unpickle('data_batch_1')
  File "open_batch.py", line 5, in unpickle
    dict = cPickle.load(fo)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)

我该如何解决这个问题?

谢谢。

因为字符编码失败

尝试使用拉丁语

cPickle.load(file, encoding='latin1')

替换:

dict = cPickle.load(fo)

unpickle 函数中:

dict = cPickle.load(fo, encoding='latin1')