我在运行django应用时遇到了编码问题。 我终于发现我的Django应用程序没有语言环境设置。运行fcgi脚本时丢失locale
奇怪的是我没有正确设置envvars文件。有了这个envvars中:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid
## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
. /etc/default/locale
export LANG
locale
当我重新启动Apache locale命令被执行,我也得到了LANG和LC_正确fr_FR.UTF-8的设置*。
现在我设置了一个小test.fcgi脚本:
#!/usr/bin/python
def myapp(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
from commands import getoutput
return ["%s"%getoutput("locale")]
from flup.server.fcgi import WSGIServer
WSGIServer(myapp).run()
当我
sudo -u www-data test.fcgi
运行它,我得到了正确的区域设置为好。 但每当我通过Web浏览器访问的脚本,我没有得到任何区域设置:
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
怎么来的Apache有正确的设置,但我FCGI脚本有没有呢?
您是否设置了settings.LANGUAGE_CODE? – jpic 2012-02-22 08:05:28
@jpic是的,但是我在上面的测试中发现的是,它甚至没有与django链接。 fgci脚本甚至没有获得区域设置。 – Sylvain 2012-02-22 12:07:41