我在運行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