我的Django Apache设置有一个奇怪的问题。我最近把我的网站移到了另一台服务器上。不幸的是,现在的编码有点混乱。当我运行这样的命令时:
barcode.generate_barcode("ean", "1341341234234")
生成的图像将显示每个数字之间的一些特殊字符,通常用于某些内嵌问题。我猜它使用两个字节而不是一个字节来表示每个字符或类似的内容。

如果我使用django ./manage.py e.py runserver运行相同的设置。生成的图像很好,没有添加特殊字符。
因此,我得出结论,这一定是我的apache2/mod_wsgi设置的一部分。但这些版本与我以前的设置相同,即debian 6、apache2.2、mod_wsgi 3.3.2。
我想尝试一个更新版本的mod_wsgi,但编译失败。
有人能为我指出正确的方向吗?这个编码错误可能有其原因?据我理解,WSGI上下文以某种方式以错误的编码加载整个python脚本,否则我无法解释为什么硬编码的字符串会在图像上产生错误。
在Apache conf.d.d/charset中:
AddDefaultCharset UTF-8另外,在我的vhost中:
AddDefaultCharset UTF-8在apache2/envvars中:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'在apache运行级脚本中使用Envvars:
if [ -z "$APACHE_ENVVARS" ] ; then
APACHE_ENVVARS=$APACHE_CONFDIR/envvars
fi我还试图在运行级脚本中对env进行硬编码。
在我的wsgi文件中:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')但似乎什么也帮不上忙。我的图像仍然是用破碎的编码生成的。
发布于 2013-06-18 16:08:57
将mod_wsgi升级到3.4.0版本修复了它。
发布于 2020-05-03 22:05:18
您可以对lang子句使用选项WSGIDaemonProcess或locale。
见https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIDaemonProcess.html
https://stackoverflow.com/questions/17165169
复制相似问题