【问题标题】:losing locale when running fcgi script运行 fcgi 脚本时丢失语言环境
【发布时间】:2012-03-12 08:59:09
【问题描述】:

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

我也得到了正确的语言环境设置。 但是每当我通过网络浏览器访问脚本时,我都没有区域设置:

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 是的,但是我在上面的测试中确定的是它甚至没有与 django 链接。 fgci 脚本甚至没有获取区域设置。

标签: django apache encoding utf-8 fastcgi


【解决方案1】:

我通过在我的sites-available/default 中添加DefaultInitEnv LANG "en_US.UTF-8" 解决了这个问题。现在 fcgi 脚本告诉我 UTF-8 !

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多