使用Python解析JSON对象中的中文字符编码问题咨询
解决方案
你遇到的中文存储为Unicode转义序列的问题,有两种可行的实现方案:
方案1:修改原始导出脚本(推荐)
问题根源是json.dump默认开启了ensure_ascii参数,会自动将非ASCII字符转义为Unicode序列,只需要调整两个参数即可直接导出正常显示中文的JSON文件,修改后的代码如下:
import json # 注意不要用dict作为变量名,会覆盖Python内置的dict类型 word_dict = {} fields = ['traditional', 'simplified', 'pinyin', 'english'] with open('cedict.txt', encoding = 'utf8') as fh: # 原有遍历逻辑保持不变 pass # 导出JSON时添加ensure_ascii=False,同时指定文件编码为utf-8 with open("cedict.json", "w", encoding="utf-8") as new_file: json.dump(word_dict, new_file, indent=4, ensure_ascii=False)
- 补充说明:不要使用
dict作为自定义变量名,会覆盖Python内置的字典类型,可能引发后续未知错误。
方案2:批量处理已生成的转义JSON文件
如果已经生成了带转义的JSON文件,可通过以下脚本批量解码traditional、simplified两个字段的值:
import json # 读取原转义JSON文件 with open("cedict.json", "r", encoding="utf-8") as f: data = json.load(f) # 遍历所有条目,处理指定字段 for word_item in data.values(): # 若读取后字段已经是正常中文可跳过下面解码步骤,直接导出即可 # 如果值仍为带双反斜杠的转义序列,使用以下代码解码 for key in ["traditional", "simplified"]: if key in word_item: word_item[key] = word_item[key].encode('utf-8').decode('unicode_escape') # 导出处理后的新JSON with open("cedict_fixed.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4, ensure_ascii=False)
- 注意:如果你的原始JSON文件中的转义序列是单反斜杠格式,
json.load步骤会自动完成所有Unicode转义的解码,不需要额外执行字段遍历解码逻辑,直接导出即可得到正常显示中文的文件。
内容的提问来源于stack exchange,提问作者user12037570
相关产品推荐
相关产品推荐

