В Python 2 функция json.dumps()
гарантирует, что все символы не-ascii будут экранированы как \uxxxx
.
Но разве это не сбивает с толку, потому что \uxxxx
является символом юникода и должен использоваться внутри строки юникода.
Вывод json.dumps()
- это str
, который является байтовой строкой в Python 2. И, следовательно, он не должен вызывать символы как \xhh
?
>>> unicode_string = u"\u00f8"
>>> print unicode_string
ø
>>> print json.dumps(unicode_string)
"\u00f8"
>>> unicode_string.encode("utf8")
'\xc3\xb8'