解决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的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
Python中is和==的区别详解
Nov 15 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python实现简单图书管理系统
Nov 22 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
详解用 python-docx 创建浮动图片
Jan 24 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原创论坛
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python版微信红包分配算法
2015/05/04 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python matplotlib画图实例代码分享
2017/12/27 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python笔记之facade模式
2019/11/20 Python
Python实现不规则图形填充的思路
2020/02/02 Python
python3字符串输出常见面试题总结
2020/12/01 Python
database面试题
2013/03/28 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
研究生导师评语
2014/12/31 职场文书
服务行业标语口号
2015/12/26 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server