4

对于我的 Flask 应用程序,我使用“windows-1251”编码。要绘制模板,我将“Content-Type”设置如下:

from flask.helpers import make_response

def render_tmpl_dummy():
    response = make_response("Some Russian text here")
    response.headers['Content-Type'] = 'text/html; charset=windows-1251'
    return response

一切都很好。但我的静态 js 文件也在“windows-1251”中。那么,有没有办法'Content-Type=application/x-javascript; charset=windows-1251'为所有静态文件设置?(PS:我不想提前手动转成UTF-8,这个方法不适合我)

4

2 回答 2

0

这就是我能够在开发服务器上为静态文件夹中具有自定义扩展名的所有文件提供自定义MIME 类型的方式:

if __name__ == '__main__':

    CUSTOM_FILE_EXTENSION = '.jsonl'
    CUSTOM_MIME_TYPE = 'application/jsonl+json'

    @flask_app.route(flask_app.static_url_path + '/' + '<path:path>' + CUSTOM_FILE_EXTENSION)
    def jsonl_mime_type(path):
        return flask.send_from_directory(
            directory=flask_app.static_folder,
            path=path + CUSTOM_FILE_EXTENSION,
            mimetype=CUSTOM_MIME_TYPE
        )

实际上,我只是重新发明了 Flask 静态 Web 服务器,它显然由对Flask 构造函数中的 add_url_rule()的单个调用组成:

        self.add_url_rule(
            f"{self.static_url_path}/<path:filename>",
            endpoint="static",
            host=static_host,
            view_func=lambda **kw: self_ref().send_static_file(**kw),
        )

我遇到了所有这些麻烦,所以开发服务器的行为更像生产,Apache 有一种更温和的方式来设置 MIME 类型。

于 2022-01-05T18:45:36.977 回答
-1

除了在开发中,您的静态文件不应由 Web 服务器提供,因此转换文件编码是正确的方法。

如果您不首先转换文件的原因是由于体积,请参阅如何在 Python 中将文件转换为 utf-8?看看如何自动化它。

于 2013-02-14T15:35:57.373 回答