一尘不染

为什么json.dumps用“ \ uxxxx”转义非ascii字符

json

在Python 2中,该函数json.dumps()将确保所有非ascii字符均以逸出\uxxxx

Python 2杰森

但这不是很令人困惑,因为它\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'

阅读 528

收藏
2020-07-27

共1个答案

一尘不染

这就是重点。您会得到一个字节字符串,而不是Unicode字符串。因此,Unicode字符需要转义才能生存。JSON允许转义,因此提供了一种表示Unicode字符的安全方式。

2020-07-27