file.write() of non-ASCII characters differs in Interpreted Python than in script run
rene.heymans at gmail.com
Thu Aug 27 16:01:31 CEST 2015
The solution / explanation follows.
Thanks to Graham Dumpleton, the author of mod_wsgi (the WSGI module for Apache2) the source of the problem could be traced back to variables in Apache2. Below are the details reproduced from https://groups.google.com/forum/#!topic/modwsgi/4wdfCOnMUkU
Now, everything is indeed UTF-8 !
Thanks again to each and everyone.
There is a file /etc/apache2/envvars referred to by /etc/apache2/apache2.conf.
In that file, I found the following lines:
## The locale used by some modules like mod_dav
## Uncomment the following line to use the system default locale instead:
As I don't need mod_dav, neither is it compiled with Apache2 ($apache2ctl -l), neither is it loaded with Apache2 ($apache2ctl -M), I commented / uncommented the 2 lines so that it now looks like:
After a stop/start of Apache2, everything works fine and when I put the code:
from locale import getpreferredencoding
prefcoding = getpreferredencoding()
from os import environ
lang = environ["LANG"]
g = open('envresults', 'a')
g.write('LANG: ' + lang + '\n')
g.write('PrefCod: ' + prefcoding + '\n')
in my WSGI application, it gives me the same as the interpreter:
rse at Alibaba:~/test$ cat envresults
rse at Alibaba:~/test$
-*- The End -*-
More information about the Python-list