UnicodeDecodeError: ‘charmap‘ codec can‘t decode byte 0x8f in position 156: character maps to

在使用mmsegmentation训练自定义数据集时遇到UnicodeDecodeError,原因是文件读取未指定编码。通过指定utf-8编码解决了该错误,但其他地方的代码仍报同样错误。进一步调查发现Windows系统的默认编码并非utf-8。通过修改系统编码设置,问题得到彻底解决。此问题困扰博主多日,深入理解问题本质是关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用mmsegmentation训练自己的数据集的过程中遇到如下一个错误

UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x8f in position 156: character maps to

在这里插入图片描述
通过点击错误提示,和如下链接
https://stackoverflow.com/questions/42019117/unicodedecodeerror-charmap-codec-cant-decode-byte-0x8f-in-position-xxx-char
可以定位到是open file时没有指定编码方式,于是乎指定了utf-8编码方式,如下。

        with open(filename, 'r', encoding="utf-8") as f:
            config_file = f.read()

这里指定后,确实不再报错误了,但是继续运行的时候,其他地方open file的代码也报同样的错误。
我想着一个一个指定也太麻烦了,可能是我的windows电脑的默认编码方式不是utf-8的原因,于是百度怎么查看和修改windows电脑的编码方式,发现我的电脑默认编码方式果然不是utf-8,于是按照如下方式进行了设置,并解决了问题。
修改电脑的编码方式
这个问题困扰了我两三天,一直没有真正地理解问题的根本原因,直到认真看了下面链接的回答后,才慢慢理解问题的原因并想到是我电脑编码方式的原因。
https://stackoverflow.com/questions/42019117/unicodedecodeerror-charmap-codec-cant-decode-byte-0x8f-in-position-xxx-char

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值