在Python 2中,该函数json.dumps()将确保所有非ascii字符均以逸出\uxxxx。
json.dumps()
\uxxxx
Python 2杰森
但这不是很令人困惑,因为它\uxxxx是一个Unicode字符,应该在Unicode字符串中使用。
输出的json.dumps()是a str,这是Python 2中的字节字符串。因此,它不应该将字符转义为\xhh吗?
str
\xhh
>>> unicode_string = u"\u00f8" >>> print unicode_string ø >>> print json.dumps(unicode_string) "\u00f8" >>> unicode_string.encode("utf8") '\xc3\xb8'
这就是重点。您会得到一个字节字符串,而不是Unicode字符串。因此,Unicode字符需要转义才能生存。JSON允许转义,因此提供了一种表示Unicode字符的安全方式。