python:json.dumps可以';不能处理utf-8?

python:json.dumps可以';不能处理utf-8?,python,json,Python,Json,以下是测试程序,包括一个汉字: # -*- 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"} 为什么这个坏了?或者我错了什么?在我看来像是有效的JSON。如果希望json输出包含非ASCII字符的字符串,则需要传递确保A

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

# -*- 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"}

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

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

您应该阅读。完整的JSON规范在右边的白色框中

生成的JSON没有问题。生成器可以生成UTF-8字符串或普通ASCII字符串,其中字符用
\uxxx
符号转义。在您的例子中,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
出局:


首先:不要给你的var命名为json,你将无法再访问json库了,其次,除了默认的json编码是utf-8,所以你不必在dumps()args中添加它。如果我可以接受它,将二进制utf-8数据转换为“\u4e2d”,我如何在javascript中将其转换回二进制utf-8,哪个客户端接收到这些数据?你试过了吗?我的意思是这样发送到浏览器我想如果你使用的是复杂的javascript库,它会知道如何处理这些数据。请参阅
{"e": "a", "d": "中"}