当前位置: 首页 > news >正文

json中文编码问题

目录

  • json中文编码问题
    • flask的响应机制
    • jsonfy
    • json.dumps

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-Typetext/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
    )

在这里插入图片描述

相关文章:

  • 做网站哪家比较好安徽建站
  • 做期货看那个网站比较专业中小企业网络营销现状
  • 我要自学网视频教程郑州seo技术外包
  • 网站做行业认证好处建设企业网站多少钱
  • thinkphp企业网站开发萝卜建站
  • 怎么做网站流量统计外链价格
  • 01LVGL图形界面库
  • Tauri + Vite + SvelteKit + TypeScript 跨平台开发全流程指南(Linux)
  • FANformer:融合傅里叶分析网络的大语言模型基础架构
  • 【C语言】memset(含常见用途、注意事项)
  • AWS Bedrock 正式接入 DeepSeek-R1 模型:安全托管的生成式 AI 解决方案
  • 2025年【A特种设备相关管理】免费试题及A特种设备相关管理模拟考试题库
  • 哪些业务场景更适合用MongoDB?何时比MySQL/PostgreSQL好用?
  • JavaScript性能优化
  • HTML基础
  • 深度学习实验
  • upload-labs-master通关攻略(1~4)
  • Linux内核如何和设备树协同工作的?
  • Oracle中Unique(id)和id int unique的区别
  • Redis常用数据结构及命令详解:从基础到进阶
  • Qt Creator插件系统详解及插件开发实战
  • 【后端】【ubuntu】 ubuntu目录权限查看的几种方法
  • 《旅游与摄影》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 【脚本】Linux一键扩大虚拟内存的大小
  • 多光谱相机数据采集过程中常见仪器
  • 基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证