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

Python存储日语字符串至JSON文件时编码显示问题求助

解决JSON存储中日文未保留原格式的问题

你遇到的问题其实是json.dumps()的默认行为导致的——它会把所有非ASCII字符自动转换成Unicode转义序列(比如\u3055这种形式),而且你额外调用encode("utf8")后直接写入文本模式打开的文件,这其实是个小误区,因为文本模式'w'期望写入字符串,而你给了字节对象,虽然Python可能会帮你处理,但这不是正确的姿势。

错误点分析

  • json.dumps()默认ensure_ascii=True,会自动转义非ASCII字符
  • 用'w'文本模式打开文件,却写入encode后的字节数据,不符合文本模式的写入规范

正确做法

有两种简单的方式可以实现你的需求:

方法一:直接使用json.dump()写入文件

json.dump()可以直接把数据写入文件对象,同时设置ensure_ascii=False来保留原字符,并且指定文件编码为utf-8:

import json

data = {"a": "{0}さんではないですか?"}
with open('data.json', 'w', encoding='utf-8') as fp:
    json.dump(data, fp, ensure_ascii=False)

方法二:用json.dumps()生成字符串后写入

如果你更习惯用dumps先处理数据,记得加上ensure_ascii=False,然后直接写入指定编码的文本模式文件(不需要手动encode,因为文件已经指定了utf-8编码):

import json

data = {"a": "{0}さんではないですか?"}
with open('data.json', 'w', encoding='utf-8') as fp:
    fp.write(json.dumps(data, ensure_ascii=False))

这两种方式最终生成的data.json都会保留原始的日文内容,不会出现Unicode转义序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:22