file.write() of non-ASCII characters differs in Interpreted Python than in script run
RAH
rene.heymans at gmail.com
Thu Aug 27 10:01:31 EDT 2015
Dear All,
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.
Best regards,
René
Solution
------------
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
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale
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:
#export LANG=C
. /etc/default/locale
export LANG
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
LANG: en_US.UTF-8
PrefCod: UTF-8
rse at Alibaba:~/test$
-*- The End -*-
More information about the Python-list
mailing list