2012-02-22 5 views
0

У меня возникла проблема с кодировкой при запуске приложения 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 сценарий не имеет?

+0

Вы установили settings.LANGUAGE_CODE? – jpic

+0

@jpic Да, но то, что я идентифицировал с вышеприведенным тестом, заключается в том, что он даже не связан с django. Скрипт fgci даже не получает настройки локали. – Sylvain

ответ

1

Я решил это, добавив DefaultInitEnv LANG "en_US.UTF-8" в мой sites-available/default. Теперь скрипт fcgi говорит мне UTF-8!

+0

Примите ваш ответ, пожалуйста – jpic

Смежные вопросы