解决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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python中的zipfile模块使用详解
Jun 25 Python
Python 通过URL打开图片实例详解
Jun 01 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
tensorflow实现加载mnist数据集
Sep 08 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
python pycharm的安装及其使用
Oct 11 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
python初步实现word2vec操作
Jun 09 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 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添加MySQL数据记录代码
2008/06/07 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
学习php分页代码实例
2013/10/24 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
javascript获取flash版本号的方法
2014/11/20 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
浅析Python编写函数装饰器
2016/03/18 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
七年级历史教学反思
2014/02/05 职场文书
大学军训感言600字
2014/02/25 职场文书
陈欧广告词
2014/03/14 职场文书
团队经理竞聘书
2014/03/31 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
商务日语专业自荐信
2014/04/17 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
安全先进个人材料
2014/12/29 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
爱国电影观后感
2015/06/19 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python