0
点赞
收藏
分享

微信扫一扫

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 5098-5099: invalid continuatio byte

WikongGuan 2022-04-29 阅读 62
python

问题描述

读取数据集(.csv格式)时遇到如下错误:
UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 5098-5099: invalid continuation byte

文本中包含中文和英文,使用utf-8格式在vs code中打开显示正常,使用Excel打开会有乱码
在这里插入图片描述
在这里插入图片描述

问题原因

UTF-8 character set, one Chinese word accounts for three bytes, GBK character set, one Chinese character accounts for two bytes
出处

数据集是中英混合的,并且在中文语句之间存在一些字符,例如:<br /> <b> </b> <p>

举个列子,其中一段内容如下:

上面这段话使用字符读入的结果是:

单纯的使用如下语句将上面的bytes转化成str输出会报错:

print(bytes.decode('utf-8'))
print(bytes[111:114])

输出:

b'\xe3\x80?'

我猜测是因为存在类似\x80?这样的字符,导致在进行字符集匹配的过程中发生了错位,所以无法正确识别出对应的字符,也就是错误提示中的invalid continuation byte,因为错位,所以两个连续的byte并不对应任何字符。

我的解决方法

使用编辑器ctrl+R快捷键替换掉文本中的类似于�?br />的字符
最后可以顺利读入数据集,展示如下:

尝试过的其他解决方法

  1. 方法一:使用charset
    参考真正解决Windows下UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xff in position 0错误的方法
    上文的解释很详细,但仍然报错:

根据报错内容,我的中英文混合的数据集被认为是ascii码的编码方式。

  1. 方法二:使用latin-1的encoding
    参考UnicodeDecodeError, invalid continuation byte
pd.read_csv('File_name.csv',encoding='latin-1')

虽然不报错了,但是读入的都是乱码
在这里插入图片描述

举报

相关推荐

0 条评论