You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python读取JSON文件时charmap codec解码的UnicodeDecodeError错误

解决Python读取JSON文件时的UnicodeDecodeError报错

报错原因

这个错误是Windows系统下的编码不匹配问题:open() 函数默认使用系统本地编码(此处为cp1252)读取文件,而JSON文件的通用标准编码为UTF-8,两种编码不兼容导致解码失败。

解决方案

方案1:指定UTF-8编码读取(优先推荐)

JSON官方规范明确要求JSON文件默认使用UTF-8编码,绝大多数场景下指定编码即可解决问题:

import json

with open('file.json', encoding='utf-8') as f:
    loadedfile = json.load(f)

方案2:处理带BOM的UTF-8编码文件

如果方案1仍然报错,可能是文件包含UTF-8 BOM(字节顺序标记,常见于Windows部分编辑器导出的文件),更换编码参数为utf-8-sig即可:

with open('file.json', encoding='utf-8-sig') as f:
    loadedfile = json.load(f)

方案3:临时兼容异常编码(仅调试用)

如果不知道文件准确编码,且可以接受少量异常字符丢失,可以添加errors参数跳过解码错误:

# 仅用于临时调试,会丢失无法解码的字符,不建议生产环境使用
with open('file.json', encoding='utf-8', errors='replace') as f:
    loadedfile = json.load(f)

注意事项

不要使用二进制模式打开文件传入json.load(),Python新版json模块仅支持文本模式的文件对象,二进制模式会额外触发类型错误。


内容的提问来源于stack exchange,提问作者HippoMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:06:05