我在运行django应用时面临编码问题。 我终于发现我的django应用程序没有设置区域设置。
奇怪的是我确实正确设置了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 :(得分:1)
我通过在DefaultInitEnv LANG "en_US.UTF-8"
中添加sites-available/default
来解决这个问题。现在fcgi脚本告诉我UTF-8!