UnicodeDecodeError: 'ascii'编解码器无法解码字节0x8b

7

我正在使用来自这里的以下代码(略有修改):

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)

我该如何解决这个问题?

谢谢。

2个回答

17

由于字符编码失败,建议尝试使用拉丁字符编码。

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

1
替换:
dict = cPickle.load(fo)

unpickle 函数中使用:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接