当前位置: 代码网 > it编程>编程语言>Javascript > 一篇文章详解json中文编码问题

一篇文章详解json中文编码问题

2025年03月13日 Javascript 我要评论
json中文编码问题在用flask写后端接口的时候,设置的接口返回格式是这样的:from flask import jsonifydef generate_response(data=none, me

json中文编码问题

在用flask写后端接口的时候,设置的接口返回格式是这样的:

from flask import jsonify

def generate_response(data=none, message=none, code=200):
    res_data = {
        "data": data if data is not none else [],
        "success": "true",
        "message": message
    }
    return jsonify(res_data)

在浏览器看到的结果中,中文变成了编码格式

而在postman中可以看到正常的数据

这是由于flask默认会将非ascii字符转义为unicode编码。中文字符在默认情况下会被转义成\uxxxx的形式

flask的响应机制

flask的响应机制主要是将视图函数的返回值转换为http响应。当视图函数返回一个字符串时,flask会将其封装成一个response对象,并设置默认的content-type为 text/html; charset=utf-8;当返回字典或列表时,flask会使用jsonify函数将其转换为json响应。

jsonfy

jsonify 是flask提供的一个便捷函数,用于将 python 对象(如字典、列表)转换为json响应。它会自动创建一个response对象,默认设置content-typeapplication/json

json.dumps

在flask里,jsonify函数其实是基于python的json.dumps来实现的。json.dumps默认会把非 ascii 字符转义成 unicode 编码形式。

可以通过设置ensure_ascii参数为false来避免这种转义,并将 json.dumps 的结果包装为 response 对象,设置响应头。

def generate_response(data=none, message=none, code=200):
    res_data = {
        "data": data if data is not none else [],
        "success": "true",
        "message": message
    }
    return response(
        json.dumps(res_data, ensure_ascii=false),
        content_type='application/json; charset=utf-8',
        status=code
    )

总结 

到此这篇关于json中文编码问题的文章就介绍到这了,更多相关json中文编码问题内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com