我想把json数据输入utf-8
我有一张my_list = []
人的名单
然后,许多人将Unicode值附加到列表中,如下所示
my_list.append(u'ტესტ')
return jsonify(result=my_list)
然后它就会变得
{
"result": [
"\u10e2\u10d4\u10e1\u10e2",
"\u10e2\u10dd\u10db\u10d0\u10e8\u10d5\u10d8\u10da\u10d8"
]
}
我想把json数据输入utf-8
我有一张my_list = []
人的名单
然后,许多人将Unicode值附加到列表中,如下所示
my_list.append(u'ტესტ')
return jsonify(result=my_list)
然后它就会变得
{
"result": [
"\u10e2\u10d4\u10e1\u10e2",
"\u10e2\u10dd\u10db\u10d0\u10e8\u10d5\u10d8\u10da\u10d8"
]
}
Use the standard-library json
module instead, and set the ensure_ascii
keyword parameter to False when encoding, or do the same with flask.json.dumps()
:
>>> data = u'\u10e2\u10d4\u10e1\u10e2'
>>> import json
>>> json.dumps(data)
'"\\u10e2\\u10d4\\u10e1\\u10e2"'
>>> json.dumps(data, ensure_ascii=False)
u'"\u10e2\u10d4\u10e1\u10e2"'
>>> print json.dumps(data, ensure_ascii=False)
"ტესტ"
>>> json.dumps(data, ensure_ascii=False).encode('utf8')
'"\xe1\x83\xa2\xe1\x83\x94\xe1\x83\xa1\xe1\x83\xa2"'
注意,仍然需要将结果显式编码为UTF8,因为在这种情况下,dumps()
函数返回unicode
对象.
您可以在Flask应用程序配置中将其设为默认值(并再次使用jsonify()
).
WARNING:不要在JSON中包含不是ASCII安全的不受信任的数据,然后插入HTML模板或在JSONP API中使用,因为这样可能会导致语法错误或打开跨站点脚本漏洞.这是因为JSON is not a strict subset of Javascript,当禁用ASCII安全编码时,U+2028和U+2029分隔符将不会转义为\u2028
和\u2029
序列.