UnicodeDecodeError: 'xxx'コーデックは位置0のバイト0xxxをデコードできません:xxx



Unicodedecodeerror Xxxcodec Cant Decode Byte 0xxx Position 0



python3.6環境で、Python2.7の一部のコードを使用するとエラーが発生しました(互換性がありません)

コード:



The wording that caused the error: 1,f = io.open('/user/weights.save', 'rb') ... cPickle.load(f) 2,with open('/user/weights.save', 'rb') as f: ... cPickle.load(f)

エラー:

UnicodeDecodeError: 'ascii'コーデックは位置0のバイト0xf2をデコードできません:序数が範囲内にありません(128)



UnicodeDecodeError: 'utf-8'コーデックは位置0のバイト0xf2をデコードできません:無効な継続バイト
UnicodeDecodeError: 'utf-8'コーデックは位置0のバイト0x80をデコードできません:無効な開始バイト
UnicodeDecodeError: 'gbk'コーデックは位置0のバイト0x80をデコードできません:不正なマルチバイトシーケンス

理由:weights.saveの読み取りのデコード形式が間違っている可能性があり、「ascii」、「utf-8」、「gbk」を使用できません。間違った場所は、オープンセンテンスではなく、cPickle.load(f)にあります

解決策:「latin1」デコード形式を使用する



import pickle as cPickle model_weighs_file = '/user/weights.save' with open(model_weighs_file, 'rb') as f: loaded_objects = [] for i in range(5): loaded_objects.append(cPickle.load(f, encoding='latin1'))