为什么Flask send_file()搞乱了编码

时间:2016-11-30 22:19:48

标签: python encoding flask

我有一个保存的HTML文件,我希望能够从我的前端GUI打开。

网页上有日文字符,并且有以下元标记 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

如果我将文件拖放到Chrome,IE或Firefox中,则页面会正确打开。但是,当我使用Flask来获取文件时,编码会混乱并且所有日文字符都显示为�符号。

在我的网络应用程序中,我使用Flask路径获取文件并将其发送到我的前端。所以在我的前端我有以下标签

<a href="/getFile/the_saved_file.html" target="_blank"></a>

在我的Flask应用程序中,我有以下路线:

@app.route('/getFile/<file>/')
def get_file(file):
    file_path = os.path.join(FILE_STORAGE_PATH, file)
    return send_file(file_path)

当我点击<a>链接时,该文件会在单独的标签页中打开。

在保留编码方面,如何使Flask的行为与拖放相同?

1 个答案:

答案 0 :(得分:0)

通过在调用send_file

时设置mimetype参数来覆盖内容类型的自动检测
return send_file(file_path, mimetype="Content-Type: text/html; charset=Shift_JIS")