导航

flask动态csv接口——编码问题

Posted on 2022-07-28 11:54  old_dog~  阅读(127)  评论(0)    收藏  举报
@xxx_blueprint.route("/file", methods=["GET"])
def group_trend():
     def generate():
            data = StringIO()
            w = csv.writer(data)
            titles = ["v1", "v2", "v3"]
            titles[0] = codecs.BOM_UTF8.decode("utf8") + codecs.BOM_UTF8.decode() + titles[0]  ## 不加此行,中文乱码!!!!
            w.writerow(titles)
            for item in [[1, 2, 3], [4, 5, 6]]:
                w.writerow(item)
                yield data.getvalue()
                data.seek(0)
                data.truncate(0)

        response = Response(stream_with_context(generate()), mimetype='text/csv')
        response.headers.set("Content-Disposition",
                             "attachment", filename="{}_{}.csv".format(file_type, dt).encode("UTF_8"), charset="UTF_8")
        response.headers["Content-Type"] = "application/octet-stream; "  #字节流类型
        return response