Hi Dieter, Toby, Juan, --On Freitag, 1. November 2002 18:18 +0100 Dieter Maurer <dieter@handshake.de> wrote:
Toby Dickenson writes:
... ... setdefaultencoding ... It is likely to disappear in fu ture versions of python. Alot of code legitimately assumes the default encodin > g is ascii, and may break if you change it. This would be a bad turn on Python's part.
For the time being, the encoding used in may files, the printer, the operating system is "latin-1".
Python should provide a convenient way to transparently convert between Unicode and my default environment, when I tell is so.
Hopefully, we can prevent this turn into Americanims!
I dont know why this code is in site.py: encoding = "ascii" # Default value set by _PyUnicode_Init() if 0: # Enable to support locale aware default string encodings. import locale loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1] if 0: # Enable to switch off string to Unicode coercion and implicit # Unicode to string conversion. encoding = "undefined" if encoding != "ascii": sys.setdefaultencoding(encoding) This implies modification of the installed code to change default behavior. I would consider this as bad. Why isnt a locales sensitive version the default? However, there is lukyly another way to do it: let us provide a sitecustomize.py module for zope. If its in the path, it has access to sys.setdefaultencoding I use it that way (I set utf-8) and Zope unicodes and strings quite good. Also without the nasty cStringIO -> StringIO patch in ZPT and friends. However I had to change some things in ZPublisher/HTTPResponse.py to always get correct charset in the header. Also there are some products who use latin-1 per default. This is a bug to. Regards Tino