UnicodeDecodeError:' utf8'编解码器不能解码位置1中的字节0xa9

时间:2015-09-27 20:12:17

标签: python unicode utf-8

我试图使用一些python模块,但它给了我以下错误:

  UnicodeDecodeError: 'utf8' codec can't decode byte 0xa9 in position 1

我认为是因为我的输入文件里面包含非UTF-8字符,所以我想在将文件传递给模块之前清理它。

如果我想识别非UTF-8字符并删除它们,我该怎么做?我试着谷歌搜索它,但无法找到好的答案。

2 个答案:

答案 0 :(得分:2)

您可以尝试将文件解码为UTF-8,忽略任何错误,然后以UTF-8重新编码。

string.decode('utf-8', errors='ignore').encode('utf-8')

或者您可以使用适当的序列替换字符(然后可以将其删除),另请参阅this answer

string.decode('utf-8', errors='replace').encode('utf-8')

但是您应该确定您的数据所在的编码,并进行适当的转换。 iconv可能有帮助。

答案 1 :(得分:0)

使用上面提到的ignore errors选项或尝试使用下面给出的替代方法:

for line in io.open("u.item", encoding="ISO-8859-1”)

大多数时候我从某个地方解析数据,它会以这种格式而不是UTF-8进行编码。