这是我的代码,

for line in open('u.item'):
# Read each line

每当我运行这段代码,它给出以下错误:

UnicodeDecodeError: 'utf-8' codec无法解码字节0xe9在位置2892:无效的延续字节

我试图解决这个问题,并在open()中添加了一个额外的参数。代码如下:

for line in open('u.item', encoding='utf-8'):
# Read each line

但是它又给出了同样的错误。那我该怎么办呢?


当前回答

根据Mark Ransom的建议,我找到了解决这个问题的正确编码。编码是“ISO-8859-1”,因此替换open(“u。Item ", encoding="utf-8")与open('u。item', encoding = "ISO-8859-1")将解决问题。

其他回答

有时当使用open(filepath),其中filepath实际上不是一个文件时,会得到相同的错误,所以首先要确保你要打开的文件存在:

import os
assert os.path.isfile(filepath)

您的文件实际上并不包含UTF-8编码的数据;它包含一些其他编码。弄清楚这种编码是什么,并在开放呼叫中使用它。

例如,在Windows-1252编码中,0xe9将是字符é。

我正在使用从Kaggle下载的数据集,同时读取这个数据集,它抛出了这个错误:

UnicodeDecodeError: 'utf-8'编解码器不能解码字节0xf1在位置 183:无效的延续字节

这就是我解决问题的方法。

import pandas as pd

pd.read_csv('top50.csv', encoding='ISO-8859-1')

在我的情况下,这个问题发生,因为我修改了一个excel文件(.xlsx)的扩展名直接到(.csv)文件直接…

解决方案是打开文件,然后将其保存为新的(.csv)文件(即file -> save as ->选择(.csv)扩展名并保存它。这对我很管用。

为了让网页在类似问题(关于UTF-8错误)的google请求中搜索得更快,我把我的解决方法留给其他人。

我有问题。csv文件打开的描述:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 150: invalid continuation byte

我用记事本打开文件,数了数第150位:那是一个西里尔字母的符号。 我用“另存为”重新保存了那个文件。'命令与编码'UTF-8'和我的程序开始工作。