Flask在WSGI服务器中引发ascii字符错误,但在调试本地服务器中不引发?

时间:2019-12-28 08:25:30

标签: python flask

在我的Mac OS上的本地调试模式下,Flask服务器运行正常,但是在AWS Ubuntu 18.04服务器上抛出ASCII字符编码错误。

我要做的是向服务器提交HTML表单并处理其中的内容。在本地调试模式下,python application.py收到“ word”:“愿意”,但是在AWS服务器上,它收到“ word”:“ \ xe6 \ x84 \ xbf \ xe6 \ x84 \ x8f”

我花了将近2天的时间寻找问题。起初,我认为AWS上的服务器使用的是python 2.7而不是3.6,但事实证明python没问题。

然后,我认为HTML模板正在以编码格式发送表单输入,但是显然HTML文件具有标头:Content-Type:text / html; charset = utf-8

之后,我认为系统编码不同,并将.conf文件更改为:WSGIDaemonProcess FlaskApp lang ='en_US.utf8'locale ='en_US.utf8'

但是仍然没有运气。有人遇到过类似的问题吗?

application.py

@app.route('/generate',methods = ['POST', 'GET'])
def generate():

    if request.method == 'POST':
        result = request.form
        result = dict(result)

        print(request.form)
        print(result)

        download_path = 'data/%s/%s' % (result['lang'], result['word'])
        if not os.path.isdir(download_path):
            os.mkdir(download_path)

index.html

<form action="/generate" method = "POST" enctype="multipart/form-data">
    <p><input type="text" name="word"></p>
    <p><input type="text" name="lang"></p>
</form>

我得到的错误是:

[Sat Dec 28 08:08:59.605358 2019] [wsgi:error] [pid 21499:tid 139977571268352] [remote 45.56.197.253:64616]   File "/var/www/html/FlaskApp/application.py", line 114, in generate
[Sat Dec 28 08:08:59.605362 2019] [wsgi:error] [pid 21499:tid 139977571268352] [remote 45.56.197.253:64616]     os.mkdir(download_path)
[Sat Dec 28 08:08:59.605367 2019] [wsgi:error] [pid 21499:tid 139977571268352] [remote 45.56.197.253:64616] FileNotFoundError: [Errno 2] No such file or directory: 'data/Chinese/\xe6\x84\xbf\xe6\x84\x8f_20191228'

0 个答案:

没有答案