解决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 相关文章推荐
python实现逆波兰计算表达式实例详解
May 06 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
python3安装speech语音模块的方法
Dec 24 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
安装PyInstaller失败问题解决
Dec 14 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
python中绕过反爬虫的方法总结
Nov 25 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 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
php使用cookie实现记住登录状态
2015/04/27 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python实现学生信息管理系统
2020/04/05 Python
python基础教程项目三之万能的XML
2018/04/02 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
好的自荐信的要求
2013/10/30 职场文书
便利店投资创业计划书
2014/02/08 职场文书
什么是就业协议书
2014/04/17 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
语文教师个人工作总结
2015/02/06 职场文书
交通事故被告答辩状
2015/05/22 职场文书