圆嘟嘟 发表于 2021-9-17 14:53:02

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5

本帖最后由 圆嘟嘟 于 2021-9-17 14:57 编辑

def read_memory(self, memory_dir):
      #from src.admin import admin
      #from conf import setting

      f_memory = open(memory_dir , 'rb')

      memory_feats = pickle.load(f_memory)# ,encoding='latin1' , encoding='bytes'



      f_memory.close()

      return memory_feats



出现错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)


百度的解决方案:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

或者

import importlib
importlib.reload(sys)

或者
加encoding='latin1' , encoding='bytes'

都没有解决

wp231957 发表于 2021-9-17 15:43:00

看看原文件 是啥编码

冬雪雪冬 发表于 2021-9-17 15:49:14

很奇怪,pickle存储的文件是二进制的,应该不存在编码问题。看看memory_dir文件是否用pickle.dump写入的

圆嘟嘟 发表于 2021-9-17 16:40:58

wp231957 发表于 2021-9-17 15:43
看看原文件 是啥编码

原文件是ANSI

圆嘟嘟 发表于 2021-9-17 16:42:08

冬雪雪冬 发表于 2021-9-17 15:49
很奇怪,pickle存储的文件是二进制的,应该不存在编码问题。看看memory_dir文件是否用pickle.dump写入的

不知道怎么看 他怎么写入的。。就是读取了这个文件
memory_dir = '../memory/memoryft_9487.pkl'
vocab_trans_dir = '../memory/transvob.pkl'
f_memory = open(memory_dir, 'rb')
memory_feats = pickle.load(f_memory)
f_memory.close()
页: [1]
查看完整版本: UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5