我正在 flask 中编写一个网络应用程序。它从树莓派上的 MySQL 服务器获取一个表。
与 postman 初步测试
我在创建表时将 MySQL Workbench 中的编码设置为 utf-8 bin。
我在使用MySQLdb.connect(charset=utf-8)时在MySQLdb中设置了charset=utf8
原始 json 如下所示。
{
"Menu": [
[
1,
"ΣΑΛΑΤΑ",
"ΚΡΗΤΙΚΗ",
5.5
],
[
2,
"ΣΑΛΑΤΑ",
"ΦΑΚΗ",
6
]]
}
这是返回json(POSTMAN)
{
"Menu": [
[
1,
"ΣΑΛΑΤΑ",
"ΚΡΗΤΙΚΗ",
5.5
],
[
2,
"ΣΑΛΑΤΑ",
"ΦΑΚΗ",
6
]]
}
到目前为止,Postman 运行得很好
现在当我想在网页上打印它时,它显示如下:
{
"Menu": [
[
1,
"\u03a3\u0391\u039b\u0391\u03a4\u0391",
"\u039a\u03a1\u0397\u03a4\u0399\u039a\u0397",
5.5
],
[
2,
"\u03a3\u0391\u039b\u0391\u03a4\u0391",
"\u03a6\u0391\u039a\u0397",
6.0
]
]
}
当我从 Android 应用程序发布同样的问题时。
返回我正在使用jsonify
的json。
最佳答案
这是有效的 JSON,并对 unicode 字符进行了转义,以便该值是 ASCII。
如果您实际在 JavaScript 中解析 JSON,您仍然会得到正确的值。假设您使用 AJAX 请求调用端点,您将使用 JSON.parse
在回调中加载数据。一些 AJAX 库可以为您处理这个问题。
var parsed_data = JSON.parse(data);
您可以通过禁用 JSON_AS_ASCII
来阻止 jsonify
将所有内容转义为 ASCII。您应该避免这样做,因为这可能会导致响应中出现无效字符。
app.config['JSON_AS_ASCII'] = False
最好保留数据原样并通过 JavaScript 使用它。
关于android - 如何在 POST 后以正确的编码在 Flask 中返回 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909617/