以下是测试程序,包括中文字符:
# -*- 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"}
为什么这会被打破?或者我错了什么?
答案 0 :(得分:58)
对我来说看起来像是有效的JSON。如果您希望json
输出一个包含非ASCII字符的字符串,则需要传递ensure_ascii=False
,然后再手动编码。
答案 1 :(得分:28)
您应该阅读json.org。完整的JSON规范位于右侧的白色框中。
生成的JSON没有任何问题。允许生成器生成UTF-8字符串或纯ASCII字符串,其中字符使用\uXXXX
表示法进行转义。在您的情况下,Python json
模块决定进行转义,中
具有转义符号\u4e2d
。
顺便说一下:任何符合要求的JSON解释器都会正确地再次浏览这个序列,然后返回实际角色。
答案 2 :(得分:5)
将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": "中"}