2012-02-22 90 views
0

我在运行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脚本有没有呢?

+0

您是否设置了settings.LANGUAGE_CODE? – jpic 2012-02-22 08:05:28

+0

@jpic是的,但是我在上面的测试中发现的是,它甚至没有与django链接。 fgci脚本甚至没有获得区域设置。 – Sylvain 2012-02-22 12:07:41

回答

1

我解决了这个问题,在我的sites-available/default中加入DefaultInitEnv LANG "en_US.UTF-8"。现在,fcgi脚本告诉我UTF-8!

+0

请接受你的答案 – jpic 2012-02-23 13:56:26