代码之家  ›  专栏  ›  技术社区  ›  user1569341

Python 3 UnicodeDecodeError:“ascii”编解码器无法解码位置0处的字节0xe2:序号不在范围内(128)

  •  8
  • user1569341  · 技术社区  · 8 年前

    我正在实施这个 notebook 在使用Python 3.5.3的Windows上,并在load_vectors()调用时得到以下错误。我尝试了不同的解决方案,但都没有成功。

    <ipython-input-86-dd4c123b0494> in load_vectors(loc)
          1 def load_vectors(loc):
          2     return (load_array(loc+'.dat'),
    ----> 3         pickle.load(open(loc+'_words.pkl','rb')),
          4         pickle.load(open(loc+'_idx.pkl','rb')))
    
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
    
    3 回复  |  直到 8 年前
        1
  •  13
  •   vvvvv lexa-b    7 年前

    with open(self.path + "/review_collection.txt", "r", encoding="utf-8") as f:
        read = f.read().splitlines()
        for row in read:
            print(row)
    
        2
  •  9
  •   Community Mohan Dere    6 年前

    您可能应该为 pickle.load(f, encoding='latin1') ,但请确保文件中的所有字符都遵循编码。

    Documentation .

    如果latin1无法解决问题,请尝试 encoding='bytes' 然后解码所有键和值。

        3
  •  1
  •   mwilmes    6 年前

    我也犯了同样的错误。我意识到我复制并粘贴了一个文件中的文本,该文件有左双引号和右双引号(卷曲引号)。一旦我把它改成标准的双引号(“),问题就解决了!

    https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html