侧边栏壁纸
博主头像
Archu博主等级

行动起来,活在当下

  • 累计撰写 25 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Flask 默认JSON 编码的中文乱码问题

archu
2024-01-18 / 0 评论 / 0 点赞 / 91 阅读 / 1631 字

Flask 默认JSON 编码的中文乱码问题

前言:

在学习中发现,在构建 json 相应对象并返回时,chrome浏览器显示乱码,如下:

# 构建响应对象
    response = {
        "success": True,
        "title": f"{month}月:",
        "count": f"※共计({count}人),名单如下:",
        "detail": result
    }
    return response

在 Flask 中,默认的 JSON 编码是采用 ASCII 编码,可能会导致中文字符显示异常,如下:

{
  "count": "\u203b\u9000\u5ba4\u5171\u8ba1(5\u4eba\uff09\uff0c\u540d\u5355\u5982\u4e0b\uff1a",
  "detail": []
  "success": True,
  "title": ,
  }

json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,例如:

import json

js = json.loads('{"haha": "哈哈"}')

print json.dumps(js)

得到的结果是

{"haha": "\u54c8\u54c8"}

中文字符打印出来的是utf-8转码。。。通过查询 docs.python.org,发现还有个参数 ensure_ascii

重新

import json

js = json.loads('{"haha": "哈哈"}')

print json.dumps(js, ensure_ascii=False) 

打印如下:

"haha": "哈哈"
0

评论区