示例代码(在 REPL 中):
import json
json_string = json.dumps("ברי צקלה")
print(json_string)
输出:
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
问题:它不是人类可读的。我的(聪明的)用户想要验证甚至编辑带有 JSON 转储的文本文件(我宁愿不使用 XML)。
有没有办法将对象序列化为 UTF-8 JSON 字符串(而不是 \uXXXX
)?
原文由 Berry Tsakala 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
ensure_ascii=False
切换到json.dumps()
,然后手动将值编码为 UTF-8:如果您正在写入文件,只需使用
json.dump()
并将其留给文件对象进行编码:Python 2 的注意事项
对于 Python 2,还有一些注意事项需要考虑。如果您正在将其写入文件,您可以使用
io.open()
而不是open()
生成一个文件对象,在您写入时为您编码 Unicode 值,然后使用json.dump()
而不是写入该文件:请注意, 在
json
模块中存在一个错误, 其中ensure_ascii=False
标志可以产生unicode
和str
对象的 _混合_。 Python 2 的解决方法是:在 Python 2 中,当使用编码为 UTF-8 的字节字符串(类型
str
)时,请确保还设置了encoding
关键字: