2012-02-22 65 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