在Apache中的flask上运行Python文件时出现编码问题

在Apache中的flask上运行Python文件时出现编码问题,python,flask,Python,Flask,在CentOS(ClearOS)上的apache Web服务器上使用Flask 运行一个AppFlaskWeb项目,在该文件中,我想运行另一个带有命令的python文件:os.system(“python3 module.py”),这会成为一个问题,因为它返回编码ANSI_X3.4-1968 在我的应用程序中,我希望以cron的形式运行该文件,因此我只需打开该文件并按如下方式运行 @app.route('/crontab') def do_crontab(): c

在CentOS(ClearOS)上的apache Web服务器上使用Flask

运行一个AppFlaskWeb项目,在该文件中,我想运行另一个带有命令的python文件:os.system(“python3 module.py”),这会成为一个问题,因为它返回编码ANSI_X3.4-1968

在我的应用程序中,我希望以cron的形式运行该文件,因此我只需打开该文件并按如下方式运行

    @app.route('/crontab')
    def do_crontab():
        crontab_arg = request.args.get('cron')
        app_root = os.path.dirname(os.path.abspath(__file__))
        crontab_run = "python3 " + app_root + "/module.py " + crontab_arg
        os.system(crontab_run)
        return "Done"
在我的本地环境中,使用Flask可以工作并返回utf-8

在文件“module.py”中,我使用命令:sys.stdout.encoding,这就是结果

我使用的是相同的python3.8和相同的env。因此,区别在于操作系统和Apache不同,而不是Werkzeug

在我的服务器上:


    [root@server ~]# locale
    LANG=sv_SE.UTF-8
    LC_CTYPE="sv_SE.UTF-8"
    LC_NUMERIC="sv_SE.UTF-8"
    LC_TIME="sv_SE.UTF-8"
    LC_COLLATE="sv_SE.UTF-8"
    LC_MONETARY="sv_SE.UTF-8"
    LC_MESSAGES="sv_SE.UTF-8"
    LC_PAPER="sv_SE.UTF-8"
    LC_NAME="sv_SE.UTF-8"
    LC_ADDRESS="sv_SE.UTF-8"
    LC_TELEPHONE="sv_SE.UTF-8"
    LC_MEASUREMENT="sv_SE.UTF-8"
    LC_IDENTIFICATION="sv_SE.UTF-8"
    LC_ALL=sv_SE.UTF-8


有人知道吗?

默认情况下,Apache不一定使用系统语言环境


尝试取消/etc/apache2/envvars中最后一行的注释并重新启动Apache。这将使Apache使用您的系统语言环境。

您可以共享您的Apache配置吗?我猜你在用mod_wsgi?您是否编辑过
/etc/apache2/envvars
?谢谢您的快速回答。1.(apache配置文件)2。使用mod_wsgi,我没有编辑任何环境变量。。。。使用ClearOS(在CentOS上构建)。或多或少地遵循了指南:啊,默认情况下Apache不一定使用系统语言环境。尝试取消对
/etc/apache2/envvars
中最后一行的注释并重新启动Apache。这就成功了:)非常感谢!=)太好了,我会补充这一点作为回答