Python 报错 unicodedecodeerror: ‘utf-8‘ codec can‘t decode byte 0x8c


1. 报错

Python 读取文件时,出现报错:

unicodedecodeerror: 'utf-8' codec can't decode byte 0x8c

2. 原因

这个错误表明 Python 在尝试解码一个字节序列时发生了问题,通常是因为指定的编码格式无法正确解码字节序列中的某些字节。

这种情况通常发生在文件的实际编码格式与指定的编码格式不匹配时,例如文件是 gbk,而程序用 utf-8 的编码去读取;或者文件中包含无法被指定编码格式解析的特殊字节。

例如,下面程序中报错位置:

with open(unique_file_path, "r", encoding="utf-8") as f:
	for line in f: # 这里就直接报错了
    	...

3. encoding 参数

在 Python 中,with open() 结构是一种常用的文件处理方式,它不仅可以更方便地管理文件对象的生命周期,还能够自动处理文件的关闭操作,以避免资源泄漏。

with open()encoding 参数指定文件的编码格式。

3.1 编码格式

encoding,即编码格式,用于指定文件中字符的编码方式,它决定了如何将字符转换为字节序列以及如何从字节序列中解码出字符。常见的编码格式包括:

  • 'utf-8':UTF-8 是一种可变长字符编码,支持全球范围内的字符。
  • 'utf-16':UTF-16 是一种固定或可变长的字符编码,支持 Unicode 字符集。
  • 'gbk''gb2312':GBK 和 GB2312 是中文字符集编码,主要用于简体中文。
  • 'latin-1':Latin-1 是一种单字节编码,支持 ISO/IEC 8859-1 字符集。

3.2 注意事项

  • 使用适当的编码格式很重要,否则可能导致文件读取时出现乱码或解码错误。
  • 如果不确定文件的编码格式,可以尝试使用 'utf-8' 编码,因为 UTF-8 是一种通用的 Unicode 编码格式,支持大多数字符集。
  • 在写入文件时,也应该使用相同的编码格式以确保数据的一致性。

4. 解决方法

如果更改 encoding="utf-8"gbk 或者其他编码格式依然报错,那么一种兜底方案是跳过这一行。

# 增加 errors="ignore"
with open(unique_file_path, "r", encoding="utf-8", errors="ignore") as f:
     for line in f:
         # 防止抛错,建议用try-except去处理
         try:
         	... # 这里写你的逻辑
         except:
     	  	pass
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值