- 的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 –