如何修复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
相关产品推荐
相关产品推荐

