web-dev-qa-db-ja.com

UnicodeDecodeError: 'ascii'コーデックはバイト0x8bをデコードできません

ここ (マイナーな編集あり)から次のコードを使用しています:

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)

この問題を修正するにはどうすればよいですか?

ありがとう。

7
Simplicity

文字のエンコードに失敗するので

ラテン語を使ってみてください

cPickle.load(file, encoding='latin1')
15
Robert I

交換:

dict = cPickle.load(fo)

in npickle関数:

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