解决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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
python实现汽车管理系统
Nov 30 Python
详解Django定时任务模块设计与实践
Jul 24 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
python计算auc的方法
Sep 09 Python
python飞机大战游戏实例讲解
Dec 04 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
python验证身份证信息实例代码
2019/05/06 Python
jupyter notebook清除输出方式
2020/04/10 Python
python如何调用java类
2020/07/05 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
大学校园毕业自我鉴定
2014/01/15 职场文书
护理不良事件检讨书
2014/02/06 职场文书
职称评定自我鉴定
2014/03/18 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
个人自我鉴定总结
2014/03/25 职场文书
地球一小时倡议书
2014/04/15 职场文书
英文演讲稿开场白
2014/08/25 职场文书
2014年党建工作总结
2014/11/11 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle