- apache2の
- WSGI
- VHOST
- のpython3
私はパートとしてenvvarsのを設定しよう私のwsgi.pyの値に非アスキー文字が含まれていると問題に遭遇します。はどうすれば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)
私は普通のユーザーと同じことをしようとすると、それは完璧に動作します。これは、os.environ
が渡されたユニコード値( 'Müüü')を受け入れ、ではなく、でエンコードしようとしているためです。同じことを理解されていない理由 は、私はthis questionは答えを提供することができますが/etc/apache2/envvars
でLANG = de_DE.UTF-8
を設定することを変更していないと思っ秒wsgi.py
の一部として実行したときに真ではないようです。
私は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 –