十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
flask接口返回的内容中出现中文乱码如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为奉节企业提供专业的成都网站建设、网站建设,奉节网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。写一个简单的例子程序:
# 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接口返回的内容中出现中文乱码如何解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联成都网站设计公司行业资讯频道了解更多相关知识。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。