开发者问题收集

“for line in...”导致 UnicodeDecodeError: 'utf-8' 编解码器无法解码字节

2013-10-31
1030400

这是我的代码,

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

每当我运行此代码时,都会出现以下错误:

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

我尝试解决这个问题并在 open() 中添加一个额外参数。代码如下所示:

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

但它再次出现相同的错误。那我该怎么办?

3个回答

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

SujitS
2013-10-31

以下方法对我也有用。 ISO 8859-1 将节省很多,主要是在使用语音识别 API 时。

示例:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1")
Ryoji Kuwae Neto
2017-10-26

您的文件实际上并不包含 UTF-8 编码数据;它包含其他编码。找出该编码并在 open 调用中使用它。

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

Mark Ransom
2013-10-31