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

使用json.dumps转换含阿拉伯字符的字典至JSON时的编码问题

解决JSON导出时阿拉伯语不被编码且保持双引号规范的问题

这个问题我碰到过好几次了,其实解决起来非常简单——你只需要给json.dumps()(或者json.dump())加一个关键参数就能搞定!

问题根源

默认情况下,json.dumps()会把所有非ASCII字符(比如你的阿拉伯语词汇)转换成\uXXXX格式的Unicode转义序列,这就是你看到"\u0622\u0632\u064e\u0631"的原因。而如果直接把字典转成字符串写入文件,又会用Python的单引号,不符合JSON必须用双引号的规范。

解决方案

使用json.dumps()的ensure_ascii=False参数,这个参数会告诉JSON模块直接输出原始的Unicode字符,而不是对它们进行转义,同时还能严格遵守JSON的双引号格式要求。

另外,推荐使用with语句来操作文件,这样更安全(会自动关闭文件),代码也更简洁:

import json

data = [{'name': 'آدَم'}, {'name': 'آزَر'}]
# 使用with语句打开文件,指定utf-8编码
with open('data.json', 'a', encoding="utf-8") as f:
    # 用json.dump直接写入文件,加上ensure_ascii=False
    json.dump(data, f, ensure_ascii=False)

关键注意点

一定要在打开文件时指定encoding="utf-8",否则不同操作系统的默认编码可能导致阿拉伯语写入后出现乱码,确保编码统一才能正确保存和读取这些非ASCII字符。

执行这段代码后,你的data.json文件里就会直接显示原始的阿拉伯语内容,格式完全符合JSON规范:

[{"name": "آدَم"}, {"name": "آزَر"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:42:26