android - 如何在 POST 后以正确的编码在 Flask 中返回 json

标签 android mysql json utf-8 flask

我正在 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/

相关文章:

java - 如何将句子中的单词存储在java命令提示符中的单独字符串中

sql - 在 MySQL 的触发器中使用聚合函数

json - 来自单个嵌套 json 的 jqgrid 子网格

java - 是否有必要从 json 对象中检索所有值?

java - 如何将java Json数据获取类变成方法?

android - Intent 从我的应用程序打开通知 channel 设置

javascript - 我可以有一个没有值的 JavaScript 对象键吗

php - 如何使用 PHP 将 HTML 表单数据传递给 MYSQL 数据库并将数据返回给浏览器

mysql - MySQL:如果未满足第二轮条件,则删除匹配行的JOIN

json - 从 AWS Glue 表到 RedShift Spectrum 外部表的日期字段转换