- 的Apache2
- WSGI
- VHOST
- python3
如果我尝试设置envvars中的一部分我的wsgi.py我遇到问题,如果值包含非ascii字符。我如何传递一个 'unicode字符串' 到wsgi.py内os.environ
Traceback (most recent call last):
File "/home/vagrant/pyvenv/lib/python3.5/site-packages/absys/config/wsgi.py", line 13, in <module>
os.environ['DJANGO_TESTVAR'] = 'M\xc3\xb6\xc3\xb6\xc3\xb6\xc3\xb6'
File "/usr/lib/python3.5/os.py", line 730, in __setitem__
value = self.encodevalue(value)
File "/usr/lib/python3.5/os.py", line 799, in encode
return value.encode(encoding, 'surrogateescape')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-4: ordinal not in range(128)
当我试图做一个普通用户或作为root用户时,它的工作完美无瑕。这似乎是由于os.environ
确实接受传入的Unicode值('Müüü'),并且不是尝试对其进行编码。 对于一个理由不理解的相同的似乎并不为真时为wsgi.py
部分对于第二个我以为this question可以提供答案的运行,但在/etc/apache2/envvars
设置LANG = de_DE.UTF-8
没有改变任何事情。
我试图读取大部分资源几乎周围的Django/WSGI/envvars中,特别是Graham Dumpletons approach 但他们都不提任何编码问题。
我想,我的问题(我的理解至今管辖)归结为:? “什么支配os.environ
小号编码的行为,以及如何将WSGI过程中影响其
如果有任何额外的信息,我可以提供帮助找到答案,请让我知道。
一些Linux系统忽略''envvars''文件。确保你正在使用mod_wsgi的守护进程模式,并使用WSGIDaemonProcess指令的lang/locale选项。请参阅:http://blog.dscpl.com.au/2014/09/setting-lang-and-lcall-when-using.html和http://modwsgi.readthedocs.io/en/develop/configuration-directives/ WSGIDaemonProcess.html –