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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:01