UnicodeDecodeError: 试图读取文档时出现无效的连续字节

4
我将尝试阅读一个包含产品数据的文档并打印出某些产品的数据。问题是,我似乎无法避免错误地读取。我只是尝试打印前100个字符以便能够读取它,然后弄清楚我需要具体打印什么和如何从文件中提取它。但我卡在阅读它这一步。该文档应该是UTF-8格式的...我漏掉了什么?以下是我的代码:
products = open('products.csv')
productsread = products.read()
print(productsread[:100])

以下是我得到的Traceback:

Traceback (most recent call last):
File "nilescratchpad.py", line 2, in <module>
productsread = products.read()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe2 in position 7451: invalid continuation byte

如果你读取文档时使用UTF-8编码出现错误,那么它就不是UTF-8,或者至少存在错误。你可以尝试使用open('products.csv',errors='replace') - Mark Tolonen
肯定有错误出现了。成功了!!!非常感谢!只是出于好奇,它用什么替换了错误? - pinkpython
1个回答

6

如果您阅读文档时遇到UTF-8编解码错误,则该文档可能不是UTF-8格式,或者至少其中存在错误。使用open('products.csv',encoding='utf8',errors='replace')将替换所有错误为Unicode代码点U+FFFD REPLACEMENT CHARACTER,但请确保大部分文档实际上是UTF-8格式。


这个有效!非常感谢!它一定有某处错误...因为大部分文档都是UTF-8格式,现在根据您的建议显示出来的内容很合理且正确。非常感谢! :) - pinkpython
明白了!现在就去做!我是 Stack Overflow、Python 和编程的新手...所以我必须获得 15 的声望才能显示我的投票,或者它是这样说的。 - pinkpython

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接