【发布时间】:2012-03-12 08:59:09
【问题描述】:
我在运行 django 应用程序时遇到编码问题。 我终于发现我的 django 应用没有设置语言环境。
奇怪的是我确实正确设置了 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
我也得到了正确的语言环境设置。 但是每当我通过网络浏览器访问脚本时,我都没有区域设置:
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 是的,但是我在上面的测试中确定的是它甚至没有与 django 链接。 fgci 脚本甚至没有获取区域设置。
标签: django apache encoding utf-8 fastcgi