解决flask接口返回的内容中文乱码的问题


Posted in Python onApril 03, 2020

写一个简单的例子程序:

# coding:utf-8
import flask
from flask import json, jsonify, request, render_template

app = flask.Flask(__name__)

@app.route("/api", methods=["GET", "POST"])
def api():
 if request.method == 'GET':
  return jsonify({"login status": "成功1"})
 elif request.method == "POST":
  data = request.get_data()
  data = json.loads(data)
  if data["name"] == "dom":
   return jsonify({"login": "成功2"})
  else:
   return jsonify({"login": "fail"})

if __name__ == "__main__":
 app.run(host='127.0.0.1', port='8080')

运行后访问网页,内容中的中文显示乱码

解决方式:

给app配置app.config[‘JSON_AS_ASCII'] = False,即:

if __name__ == "__main__":
 app.run(host='127.0.0.1', port='8080')

变为:

if __name__ == "__main__":
 app.config['JSON_AS_ASCII'] = False
 app.run(host='127.0.0.1', port='8080')

补充知识:Flask中 request.files.get('file') 后的文件对象在读取时(中文)乱码

一、问题引出

我们通常需要接收前端发送过来的文件,而在Flask中通常采取file_obj = request.files.get(‘file') 的方式获取文件对象,按照Flask官方文档的介绍,返回值 file_obj 是一个文件对象,但是我们平常在使用时通常是在open() 函数中指定打开方式的,可是这里并不知道这个文件对象中的数据是何种编码方式,因此就会出现中文乱码的问题。如下所示:当上传的文件内容中包含中文时就会出现乱码:

file_obj = request.files.get('file')
file_content = file_obj.read()
print('答案内容为:', file_content)

二、解决过程探索

通过Flask的官方文档及源码得知:

request.files 包含了所有上传文件的MultiDict对象。文件中的每个键都是来自 "的名称。文件中的每个值都是一个Werkzeug FileStorage对象。参考:Flask API

而类 FileStorage 是被这样描述的:FileStorage类是传入文件的一个简单包装。请求对象使用它来表示上传的文件。并且 FileStorage 提供了一些方法,最长用的就是如下几个:参考:Werkzeug DataStructures

filename   The filename of the file on the client.
name   The name of the form field.
save   (dst, buffer_size=16384)Save the file to a destination path or file object. If the destination is a file object you have to close it yourself after the call. The buffer size is the number of bytes held in memory during the copy process. It defaults to 16KB. 等等

但是并没有找到Flask在得到这个文件对象时的编码方式。

三、解决办法

先从文件对象中将内容读出,然后再按照我们想要的格式解码(通常 utf-8)。

file_obj = request.files.get('file')
file_content = file_obj.read()
file_content = file_content.decode("utf-8")
print('答案内容为:', file_content)

这样文件中的中文内容就不会乱码了。

以上这篇解决flask接口返回的内容中文乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python实现kNN算法
Dec 20 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Django Path转换器自定义及正则代码实例
May 29 Python
Python通过len函数返回对象长度
Oct 22 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 #Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 #Python
python传到前端的数据,双引号被转义的问题
Apr 03 #Python
Django实现将一个字典传到前端显示出来
Apr 03 #Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 #Python
Django import export实现数据库导入导出方式
Apr 03 #Python
Django用户身份验证完成示例代码
Apr 03 #Python
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php单一接口的实现方法
2015/06/20 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
Python文件路径名的操作方法
2019/10/30 Python
NumPy中的维度Axis详解
2019/11/26 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
执行总经理岗位职责
2014/02/03 职场文书
体育比赛口号
2014/06/09 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2014年城管工作总结
2014/11/20 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python