在Windows端运行代码时遇到问题:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 85: illegal multibyte sequence
同样的代码,我在Linux环境下运行就没问题,后经过查询,Windows下报该问题的原因是:
通常表示在尝试使用yaml库加载一个文件时,遇到了包含非法多字节序列的字符,而默认的文件打开方式(‘r’)使用了操作系统的默认编码(例如,在Windows中使用的是GBK编码)。
通过以二进制(‘rb’)模式打开文件可以解决这个问题。在二进制模式下,文件内容被读取为字节流,而不会进行编码转换。
综上就是不同操作系统的默认编码方式不一样,解决该问题,只需要在读取yaml文件处加上:
"rb" # 以二进制模式打开这个文件
代码中具体修改的地方如下:
修改好后再运行读取就没问题了,有些学者虽然跟我不是一样的代码也会遇到此问题,原理都一样,定位找到位置添加即可。