报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 85: illegal multibyt

目录

  • 问题
  • 问题分析及解决原理
  • 代码修改
  • 总结

问题

在Windows端运行代码时遇到问题:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 85: illegal multibyte sequence

报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 85: illegal multibyt_第1张图片

问题分析及解决原理

同样的代码,我在Linux环境下运行就没问题,后经过查询,Windows下报该问题的原因是:

通常表示在尝试使用yaml库加载一个文件时,遇到了包含非法多字节序列的字符,而默认的文件打开方式(‘r’)使用了操作系统的默认编码(例如,在Windows中使用的是GBK编码)。

通过以二进制(‘rb’)模式打开文件可以解决这个问题。在二进制模式下,文件内容被读取为字节流,而不会进行编码转换。

综上就是不同操作系统的默认编码方式不一样,解决该问题,只需要在读取yaml文件处加上:

"rb"    # 以二进制模式打开这个文件

代码修改

代码中具体修改的地方如下:

报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 85: illegal multibyt_第2张图片

报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 85: illegal multibyt_第3张图片

总结

修改好后再运行读取就没问题了,有些学者虽然跟我不是一样的代码也会遇到此问题,原理都一样,定位找到位置添加即可。

你可能感兴趣的:(python,python)