字符编码问题,UnicodeDecodeError——教你如何查看文件编码方式

当Python在读取非UTF-8编码的文件时,可能会出现Unicode解码错误。该错误指出UTF-8编码器无法解码特定字节。解决方法是在打开文件时指定正确的编码。可以使用chardet库检测文件的编码,例如检测到的编码格式为UTF-8,然后在读取文件时传入'encoding=检测到的编码',从而避免解码错误。

首先说明一下原因:
字符编码是一组特定的规则,用于从原始二进制字节字符串(101010101010)映射到构成人类可读文本的字符(如:fuck等)。有很多不同的技术用以编码二进制数据集,如果不知道写入数据时的原始编码技术,硬生生地将数据转换成文本,那么最终会得到乱码文本。

在python 3中处理文本时,将遇到两种主要的数据类型:一个是字符串,这是文本的默认类型:;另一个是字节数据类型,这是整数序列。大部分数据集可能使用UTF-8编码,这也是Python默认解译的编码技术,因此在大多数情况下不会遇到问题,但是有时会出现一下错误信息。

Unicode解码错误:UTF-8编码译码器无法解码位置11处的0x99字节:无效起始字节————
UnicodeDecodeError Trackback(most recent call last): ....

这种问题的出现是因为读取了非UTF-8编码的文件。要解决此错误,需要在读取文件时传入正确的编码格式。咱们可以使用chardet模块检查当前文件的编码方式。

import chardet
with open('F:/2号词云.txt','rb') as rawdata:
    result = chardet.detect(rawdata.read(1000))
    
print(result)

结果为:
在这里插入图片描述


我这里的编码格式是utf-8,然后置信度(可相信程度)是99%。
然后大家可以在读取文件时,传入encoding=‘上面检测出来的编码格式’
,这样就不会在读文件时报错啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值