这是我的代码,

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

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


当前回答

如此:

open('filename', encoding='latin-1')

Or:

open('filename', encoding="ISO-8859-1")

其他回答

你可以试试这种方法:

open('u.item', encoding='utf8', errors='ignore')

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

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

如果你使用的是python2,下面是解决方案:

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # Do something

因为encoding参数对open()不起作用,你将得到以下错误:

'encoding'是此函数的无效关键字参数

用notepad++打开文件,选择“编码”或“编码”菜单来识别或从ANSI转换为UTF-8或ISO 8859-1代码页。

你可以用以下方法来解决这个问题:

for line in open(your_file_path, 'rb'):

'rb'以二进制模式读取文件。点击这里阅读更多。