V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ropon
V2EX  ›  Flask

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

  •  1
     
  •   ropon ·
    ropon · 2020-07-30 22:44:26 +08:00 · 5386 次点击
    这是一个创建于 1581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • json 返回默认 Content-Type: application/json,非默认 utf-8 编码(比如 Edge 、Safari)浏览器测试中文乱码?
    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")
    
    • 如果 Content-Type: application/json;charset=utf-8 正常,请问如何处理呢?
    19 条回复    2020-11-12 18:33:40 +08:00
    ropon
        1
    ropon  
    OP
       2020-07-30 23:07:08 +08:00 via iPhone
    请问有遇到过没呢?如何解决呢
    ChanKc
        2
    ChanKc  
       2020-07-30 23:18:58 +08:00
    你这不是已经有答案了?
    如果客户端是你控制,让客户端发 Accept-Charset
    johnsona
        3
    johnsona  
       2020-07-30 23:56:58 +08:00
    ensure_ascii=False
    ropon
        4
    ropon  
    OP
       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
        5
    ropon  
    OP
       2020-07-31 09:15:51 +08:00
    ruanimal
        6
    ruanimal  
       2020-07-31 09:53:59 +08:00
    你得看一下返回的原始数据是啥
    ropon
        7
    ropon  
    OP
       2020-07-31 09:54:41 +08:00
    @ruanimal {"code":0 ,"msg": "中文测试"}
    ruanimal
        8
    ruanimal  
       2020-07-31 10:10:37 +08:00
    用开发者工具看网络请求的 response,而不是贴文本啊
    ropon
        9
    ropon  
    OP
       2020-07-31 12:32:30 +08:00 via iPhone
    @ruanimal 截图中乱码,打扰了
    renmu123
        10
    renmu123  
       2020-07-31 12:37:05 +08:00 via Android
    (推荐一波 fastapi,爽是真的爽
    ropon
        11
    ropon  
    OP
       2020-07-31 13:30:29 +08:00
    ropon
        12
    ropon  
    OP
       2020-07-31 13:31:33 +08:00
    Cookieeeeee
        13
    Cookieeeeee  
       2020-07-31 15:35:15 +08:00
    用的 python2 吗
    perpetually
        14
    perpetually  
       2020-07-31 17:14:55 +08:00
    你为什么可以发照片
    johnsona
        15
    johnsona  
       2020-07-31 17:19:06 +08:00
    @ropon RESTFUL_JSON = dict(ensure_ascii=False)
    就可以了
    ropon
        16
    ropon  
    OP
       2020-07-31 19:44:14 +08:00 via iPhone
    @Cookieeeeee python 3
    ropon
        17
    ropon  
    OP
       2020-07-31 19:44:40 +08:00 via iPhone
    @jsisjs20130824 配置了,还是乱码,方便测试帮忙看下吗?
    kucoll
        18
    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
        19
    ropon  
    OP
       2020-11-12 18:33:40 +08:00 via iPhone
    @kucoll 已经解决了,可以看我 GitHub demo
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5301 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.