Error : 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte

Error : 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte

我是 Python 的初学者,我想读取多个 csv 文件,当我用 encoding = "ISO-8859-1" 对它们进行编码时,我的 csv 文件中出现了这种字符:“ Dâ°faut”。所以我尝试在 utf-8 中进行编码,但出现此错误:'utf-8' 编解码器无法解码位置 14 中的字节 0xb0:起始字节无效'。 有谁可以帮助我吗 ? 谢谢!

如果您使用 utf-8 解码,您也应该使用 utf-8 编码。 根据您要显示的 unicode 字符(基本上除了基本的拉丁字母、数字和常用符号之外的所有字符)utf-8 需要多个字节来存储它。由于文件是逐字节读取的,因此您需要知道下一个字符是否需要超过一个字节。这由字节的最高有效位指示。 0xb0 转换为二进制形式的 1011 0000,如您所见,第一位是 1,它告诉 utf-8 解码器它需要更多字节才能读取该字符。由于您使用 iso-8859-1 编码,因此以下字节将成为当前字符的一部分并且编码失败。 如果要对度数符号(°)进行编码,则编码为0xC2 0xB0。

无论如何:始终使用与解码相同的编码进行编码。如果您需要代码页之外的字符,请使用 utf-8。一般来说,使用任何 utf 编码都是一个很好的建议。