解决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 自动安装 Rising 杀毒软件
Apr 24 Python
python求素数示例分享
Feb 16 Python
python实现比较两段文本不同之处的方法
May 30 Python
python基于phantomjs实现导入图片
May 13 Python
Python实现简单的四则运算计算器
Nov 02 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
python安装mysql的依赖包mysql-python操作
Jan 01 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关联链接常用代码
2012/11/05 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
js获取form的方法
2015/05/06 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
python分割文件的常用方法
2014/11/01 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
比较一下entity bean和session bean
2013/12/27 面试题
教师推荐信范文
2013/11/24 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
感谢信的技巧及范例
2019/05/15 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫
mysql sql常用语句大全
2022/06/21 MySQL