python:json.dumps不能处理utf-8?

2024-06-25 05:21:16 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是测试程序,包括一个汉字:

# -*- coding: utf-8 -*-
import json

j = {"d":"中", "e":"a"}
json = json.dumps(j, encoding="utf-8")

print json

下面是结果,看json.dumps将utf-8转换为原始数字!

{"e": "a", "d": "\u4e2d"}

为什么这个坏了?或者我做错了什么?


Tags: importjson数字测试程序utfencodingprintdumps
3条回答

你应该读json.org。完整的JSON规范在右边的白色框中。

生成的JSON没有问题。生成器可以生成UTF-8字符串或纯ASCII字符串,其中的字符用\uXXXX符号转义。在您的例子中,Python json模块决定转义,而具有转义符号^{}

顺便说一下:任何一致的JSON解释器都会再次正确地对这个序列进行解压,并返回实际的字符。

将simplejson与上述选项一起使用:

# -*- coding: utf-8 -*-
import simplejson as json

j = {"d":"中", "e":"a"}
json = json.dumps(j, ensure_ascii=False, encoding="utf-8")

print json

出局:

{"e": "a", "d": "中"}

在我看来是有效的JSON。如果希望json输出包含非ASCII字符的字符串,则需要传递ensure_ascii=False,然后手动编码。

相关问题 更多 >