以下是测试程序,包括中文字符:
# -*- 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)
为什么这会被打破?或者我错了什么?
在Python 2中,该函数json.dumps()将确保将所有非ascii字符转义为\uxxxx.
但这不是很混乱,因为它\uxxxx是一个unicode字符,应该在unicode字符串中使用.
输出json.dumps()是a str,它是Python 2中的字节字符串.因此它不应该将字符转义为\xhh?
>>> unicode_string = u"\u00f8"
>>> print unicode_string
ø
>>> print json.dumps(unicode_string)
"\u00f8"
>>> unicode_string.encode("utf8")
'\xc3\xb8'
Run Code Online (Sandbox Code Playgroud)