Jay*_*und 5 django nginx utf-8 python-3.x gunicorn
当我按照此处的说明进行操作时,发生了此错误。我设置了单位文件。我了解到 LAN env value 无法正确传输,并且它使用默认的 ascii。您可以通过在单元文件中添加一行来解决此问题。这是一个非常漫长的旅程才发现......
[service]
Environment="LANG=en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)
当我使用 mod_wsgi 和 Apache2 设置环境时没有任何问题。我只需export LANG='en_US.UTF-8' export LC_ALL='en_US.UTF-8'在 /etc/apache2/envars 路径中添加“”即可上传非 ASCII 文件名的文件。
这次,我使用Nginx 和 Gunicorn设置我的环境。但是在显示非 ASCII 字符的每个部分都会发生 UnicodeEncoderError。
'ascii' codec can't encode characters in position 57-59: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在Python3和Django环境中使用'ascii'编解码器进行编码。
我搜索、搜索、搜索。我检查并尝试如下。
#!/home/username/venv/bin/python3在 Gunicorn 文件中检查“ ”。我怀疑 Gunicorn 调用的是 python2 而不是 python3,因为 python2 也安装在我的 Ubuntu 中。如果我检查python -c 'import sys; print(sys.getdefaultencoding());',我可以看到“ascii”。Python 2 有 str 和 unicode。我的结论是 Gunicorn 最终没有问题。
我仍然对Ubuntu16.04中预装的python 2.7持怀疑态度。你能解释一下我遗漏或误解了什么吗?我知道 Python2 可能会出现 ascii 编解码器编码错误,而 Python3 则不会。
环境 Python 3.5 Django 1.11.1 Gunicorn 19.7.1 Nginx 1.10.3 Ubuntu 16.04 LTS
对于遇到gunicorn编码问题但不将其用作守护进程的人(例如,如果您在docker中运行gunicorn,则只需启动命令),因此不使用此配置文件:
\n\n我正在使用 openpyxl 库生成电子表格,在使用 Gunicorn 对服务进行 docker 化的服务器中测试它时出现此错误。在确认所有其他编码要求都正常(python、系统区域设置等)后,很明显问题出在gunicorn。\n应用程序中的其他所有内容都工作正常,只是电子表格导出引发了此问题。
\n\n我本来打算尝试用其他东西替换 Gunicorn,但后来我意识到问题出在文件名上,而不是生成文件内容的过程上。
\n\n我将生成的文件命名为“exportaci\xc3\xb3”,只需将其替换为“exportacio”即可使其发挥作用。
\n\n鉴于我确实不需要文件名中的非 ASCII 字符,这对我来说已经足够了。
\n| 归档时间: |
|
| 查看次数: |
2253 次 |
| 最近记录: |