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": "哈哈"
评论区