У меня возникла проблема с кодировкой при запуске приложения django. Наконец-то я обнаружил, что у моего приложения django нет языкового набора.потеря языкового стандарта при запуске скрипта fcgi
Странно, что я правильно настроил файл 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 команду локали запускается на выполнение, и я получаю правильные fr_FR.UTF-8 параметров для LANG и LC_ *.
Теперь я создал небольшой 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
@jpic Да, но то, что я идентифицировал с вышеприведенным тестом, заключается в том, что он даже не связан с django. Скрипт fgci даже не получает настройки локали. – Sylvain