我有一个Django应用,该应用无法登录,并显示错误UnicodeEncodeError: 'ascii' codec can't encode character
。问题在于系统语言环境是CentOS默认语言环境,即ASCII。管理员不想在其服务器上更改系统范围的区域设置,他们说这些应用程序应该能够在干净的环境中运行。
我们通过将其添加到uwsgi.ini来解决了Django应用本身的问题:
env = LANG=en_US.UTF-8
env = LANGUAGE=en_US.en
env = LC_ALL=en_US.UTF-8
但是,uwsgi.ini对于作为django管理命令运行的代码没有任何影响,我们在其中做了很多工作。
解决此问题的最佳方法是什么?
UPD :我们还尝试在settings.py
文件中设置区域设置,但这无济于事。
答案 0 :(得分:1)
尝试在Python发行版的sitecustomize.py
文件夹内的site-packages
模块中设置默认编码。此模块在启动时为loaded by Python,可以在此处放置任意针对站点的自定义内容。
sitecustomize.py
import sys
sys.setdefaultencoding('UTF8')
如果该模块尚不存在,则可能需要创建该模块。