python:json.dumps无法处理utf-8?

Bin*_*hen 20 python json

以下是测试程序,包括中文字符:

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

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

print json
Run Code Online (Sandbox Code Playgroud)

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

{"e": "a", "d": "\u4e2d"}
Run Code Online (Sandbox Code Playgroud)

为什么这会被打破?或者我错了什么?

Ign*_*ams 59

看起来对我来说是有效的JSON.如果要json输出其中包含非ASCII字符的字符串,则需要先传递ensure_ascii=False然后手动编码.

  • 这是帮助我的答案!! (2认同)

Bol*_*wyn 28

你应该阅读json.org.完整的JSON规范位于右侧的白色框中.

生成的JSON没有任何问题.允许生成器生成UTF-8字符串或纯ASCII字符串,其中字符使用\uXXXX符号进行转义.在您的情况下,Python json模块决定转义,并?具有转义符号\u4e2d.

顺便说一句:任何符合要求的JSON解释器都会正确地再次浏览这个序列,并返回实际角色.


ale*_*mol 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
Run Code Online (Sandbox Code Playgroud)

前前后后:

{"e": "a", "d": "?"}
Run Code Online (Sandbox Code Playgroud)