【问题标题】:Error : 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte错误:“utf-8”编解码器无法解码位置 14 中的字节 0xb0:无效的起始字节
【发布时间】:2021-01-29 00:21:06
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 SO Lina S !请分享一个可重现的示例,其中包含使用的数据和代码?这将极大地帮助我们帮助您。

标签: python python-3.x utf-8 character-encoding encode


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2020-06-09
    • 2021-07-10
    • 2017-07-09
    • 2021-03-05
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多