En Thu, 13 Sep 2007 08:43:11 -0300, Ryan Ginstrom <[EMAIL PROTECTED]> escribi�:
>> On Behalf Of Fabio Zadrozny >> Makes sense... Do you think that creating a new object, >> setting it as sys.stdout and overriding its write() method to >> check for a unicode string to do >> original_stdout.write(unicode_str.encode(my_encoding)) would >> do it? > > Here's an output stream encoder I have used. It might be kind of > screwball, > so I'd welcome any feedback on it, but it does work for encoding output > streams. Looks fine to me, just two comments: > def write(self, obj): > """Wraps the output stream's write method, encoding it with > the specified encoding""" > > self.stdout.write(obj.encode(self.encoding)) You should check that obj is an unicode object before calling encode. Strings should not be encoded. > def __getattr__(self, attr): > """Delegate everything but write to the stream""" > > if attr != "write": > return getattr(self.stdout, attr) > return self.write __getattr__ is only called when the attribute has NOT been found in the usual way, so checking for "write" is unnecesary. Just return getattr(self.stdout, attr) always. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list