FLASK 设置JSON_AS_ASCII = False 中文不能正常显示:
很多人已经设置了:flask_app.config[‘JSON_AS_ASCII’] = False 或JSON_AS_ASCII = False 但是还是不能正常显示中文
问题描述
设置了JSON_AS_ASCII = False,还是出现中文乱码
HTTP/1.1 200 OK
server: Werkzeug/3.0.2 Python/3.9.13
date: Wed, 17 Apr 2024 08:21:06 GMT
content-type: application/json
content-length: 81
connection: close
{
"msg": "\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef",
"status": 400
}
原因分析:
JSON_AS_ASCII = False方法已经被淘汰
更新为:app.json.ensure_ascii = False
解决方案:
1.如果是写的是 **
flask_app.config[‘JSON_AS_ASCII’] = False** 直接更换成 app.json.ensure_ascii = False
2.如果是写的 JSON_AS_ASCII = False 可以直接删除,
把return(‘status’: 200, ‘msg’: ‘登录成功’},换成 return json.dumps({‘status’: 200, ‘msg’: ‘登录成功’}, ensure_ascii=False)
下面我给大家搞了一个对照的例子。找return在哪里就行
# 登录功能
@user_bp.route('/login/', methods=['POST'])
def login():
# 获取用户名
# name = request.form.get('name') # content-type: application/x-www-form-urlencoded
name = request.get_json().get('name') # content-type: application/json
# 获取密码
pwd = request.get_json().get('pwd')
# 判断是否传递数据完整
if not all([name, pwd]):
return{'status': 400, 'msg': '参数不完整'}
else:
# 通过用户名获取用户对象
user = User.query.filter(name == name).first()
# 判断用户是否存在
if user:
# 判断密码是否正确
if user.check_password(pwd):
return {'status': 200, 'msg': '登录成功'}
return {'status': 400, 'msg': '用户名或密码错误'}
----------------------------------------------------------
# 登录功能
@user_bp.route('/login/', methods=['POST'])
def login():
# 获取用户名
# name = request.form.get('name') # content-type: application/x-www-form-urlencoded
name = request.get_json().get('name') # content-type: application/json
# 获取密码
pwd = request.get_json().get('pwd')
# 判断是否传递数据完整
if not all([name, pwd]):
return json.dumps({'status': 400, 'msg': '参数不完整'}, ensure_ascii=False)
else:
# 通过用户名获取用户对象
user = User.query.filter(name == name).first()
# 判断用户是否存在
if user:
# 判断密码是否正确
if user.check_password(pwd):
return json.dumps({'status': 200, 'msg': '登录成功'}, ensure_ascii=False)
return json.dumps({'status': 400, 'msg': '用户名或密码错误'}, ensure_ascii=False)
执行成功后的结果(看到这了可以给个免费的赞吗,作者也会努力更新flask里面的一些错误。)
同时记得在上面引入json库 from flask import json
HTTP/1.1 200 OK
server: Werkzeug/3.0.2 Python/3.9.13
date: Wed, 17 Apr 2024 08:55:13 GMT
content-type: text/html; charset=utf-8
content-length: 41
connection: close
{
"msg": "参数不完整",
"status": 400
}