[IronPython] Bug with string encoding while redirecting to a custom stream

Kristof Wagemans kristof.wagemans at gmail.com
Mon Apr 3 19:12:49 CEST 2006

I needed to change the default ASCII encoding to Unicode because it removed
all accented characters when sending data to my custom stream. While trying
to get this to work I found the following problem.


Use PythonEngine.SetStdout(), PythonEngine.SetStderr(),
PythonEngine.SetStdin () to set your own custom stream. There is a
PythonFile wrapper created around the stream with the default encoding
specified. Then change the default encoding with
sys.setdefaultencoding('utf_16_le'). The encoding of the PythonFile remains
the same and it keeps sending data in the old format. I don't know how
difficult it is to change this behavior and even if it's possible to change
the encoding dynamically.


An easy workaround for me is to change the default encoding first and then
set the new streams. I'm only using sys.setdefaultencoding('utf_16_le') to
specify the default encoding at startup of the PythonEngine. The setting
that I want to change is inaccessible: DefaultEncoding is an internal value
in SystemState. Maybe it would be a good idea to add this to the Options so
that it's possible to directly start the PythonEngine with the desired




Something else: it would be nice if the __doc__ of enum's returned all the
names of the constants instead of 'no documentation available'.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20060403/01e27fd5/attachment.html>

More information about the Ironpython-users mailing list