警告:不要在不符合ASCII安全的JSON中包含不受信任的数据,然后插入HTML模板或在JSONP API中使用,因为这样可能会导致语法错误或打开跨站点脚本漏洞。这是因为JSON is not a strict subset of Javascript和禁用ASCII安全编码时,U+2028和U+2029分隔符将不会转义为\u2028和\u2029序列。
from flask import json,Response
@app.route("/")
def hello():
my_list = []
my_list.append(u'ტესტ')
data = { "result" : my_list}
json_string = json.dumps(data,ensure_ascii = False)
#creating a Response object to set the content type and the encoding
response = Response(json_string,content_type="application/json; charset=utf-8" )
return response
5条答案
按热度按时间dfuffjeb1#
使用以下配置添加UTF-8支持:
taor4pac2#
使用标准库
json
module,并在编码时将ensure_ascii
关键字参数设置为False,或者对flask.json.dumps()
执行相同的操作:请注意,您仍然需要将结果显式编码为UTF8,因为在这种情况下,
dumps()
函数返回unicode
对象。您可以通过在Flask应用配置中将
JSON_AS_ASCII
设置为False来将其设置为默认值(并再次使用jsonify()
)。警告:不要在不符合ASCII安全的JSON中包含不受信任的数据,然后插入HTML模板或在JSONP API中使用,因为这样可能会导致语法错误或打开跨站点脚本漏洞。这是因为JSON is not a strict subset of Javascript和禁用ASCII安全编码时,U+2028和U+2029分隔符将不会转义为
\u2028
和\u2029
序列。wlsrxk513#
如果你仍然想使用flask的json并确保使用utf-8编码,那么你可以这样做:
我希望这能帮上忙
2lpgd9684#
在我的情况下,上述解决方案是不够的。(在GCP App Engine灵活环境中运行flask)。最后我做了:
qgzx9mmu5#
在版本2.3中更改:删除了JSON_AS_ASCII、JSON_SORT_KEYS、JSONIFY_MIMETYPE和JSONIFY_PRETTYPRINT_REGULAR。默认的app.json提供程序具有等效的属性。
现在,我们可以像这样更改此行为: