flask_restful json 返回默认 Content-Type 以及中文乱码

2020-07-30 22:44:26 +08:00
 ropon
login_bp = Blueprint("login_bp", __name__, url_prefix="/api/v1")
class LoginView(Resource):
    @marshal_with(user_fields)
    def get(self):
        users = User.query.all()
        # print(users)
        return users
        # return {"code":0 ,"msg": "中文测试"}
api.add_resource(LoginView, "/login")
4833 次点击
所在节点    Flask
19 条回复
ropon
2020-07-30 23:07:08 +08:00
请问有遇到过没呢?如何解决呢
ChanKc
2020-07-30 23:18:58 +08:00
你这不是已经有答案了?
如果客户端是你控制,让客户端发 Accept-Charset
johnsona
2020-07-30 23:56:58 +08:00
ensure_ascii=False
ropon
2020-07-31 09:08:34 +08:00
换句话说返回 Content-Type 如何配置
难道是通过 api.representations = OrderedDict({'application/json;charset=utf-8': output_json})

JSON_AS_ASCII = False
JSONIFY_MIMETYPE = "application/json;charset=utf-8"
RESTFUL_JSON = dict(ensure_ascii=False)
@jsisjs20130824

测试 demo 地址 https://github.com/Ropon/apidemo,请问各位帮忙看下呢
ropon
2020-07-31 09:15:51 +08:00
ruanimal
2020-07-31 09:53:59 +08:00
你得看一下返回的原始数据是啥
ropon
2020-07-31 09:54:41 +08:00
@ruanimal {"code":0 ,"msg": "中文测试"}
ruanimal
2020-07-31 10:10:37 +08:00
用开发者工具看网络请求的 response,而不是贴文本啊
ropon
2020-07-31 12:32:30 +08:00
@ruanimal 截图中乱码,打扰了
renmu123
2020-07-31 12:37:05 +08:00
(推荐一波 fastapi,爽是真的爽
ropon
2020-07-31 13:30:29 +08:00
@renmu123 同样测试中文乱码 https://ftp.rss.ink/imgs/2020/07/1e975881896b3133.png
ropon
2020-07-31 13:31:33 +08:00
Cookieeeeee
2020-07-31 15:35:15 +08:00
用的 python2 吗
perpetually
2020-07-31 17:14:55 +08:00
你为什么可以发照片
johnsona
2020-07-31 17:19:06 +08:00
@ropon RESTFUL_JSON = dict(ensure_ascii=False)
就可以了
ropon
2020-07-31 19:44:14 +08:00
@Cookieeeeee python 3
ropon
2020-07-31 19:44:40 +08:00
@jsisjs20130824 配置了,还是乱码,方便测试帮忙看下吗?
kucoll
2020-11-12 16:38:36 +08:00
falsk_resutful 没用过,不过 flask 中可以配置返回 json 的媒体类型:

JSONIFY_MIMETYPE = "application/json;charset=UTF-8"

参考文档: https://dormousehole.readthedocs.io/en/latest/config.html?highlight=jsonify_mimetype#JSONIFY_MIMETYPE
ropon
2020-11-12 18:33:40 +08:00
@kucoll 已经解决了,可以看我 GitHub demo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX