mutt_ldap.py: Also wrap stderr in a codecs writer
authorW. Trevor King <wking@tremily.us>
Thu, 24 Jan 2013 22:26:40 +0000 (17:26 -0500)
committerW. Trevor King <wking@tremily.us>
Thu, 24 Jan 2013 22:32:22 +0000 (17:32 -0500)
So Unicode log messages handled by StreamHandler will be properly
encoded.  In Python 2.7.3 (and probably other 2.x versions),
StreamHandler.emit() falls back on UTF-8 if stream.encoding is None.
With this change, it will use the configured output encoding instead
of guessing.

mutt_ldap.py

index cab0222aecd392e2d53507a6569a5897f9e32e77..efab29b3583e1973c47dfeac4d3447efeeb17a6c 100755 (executable)
@@ -276,9 +276,10 @@ if __name__ == '__main__':
             'system', key,
             CONFIG.get('system', key, raw=True) or default_encoding)
 
-    # HACK: convert sys.stdout to Unicode (not needed in Python 3)
+    # HACK: convert sys.std{out,err} to Unicode (not needed in Python 3)
     output_encoding = CONFIG.get('system', 'output-encoding')
     _sys.stdout = _codecs.getwriter(output_encoding)(_sys.stdout)
+    _sys.stderr = _codecs.getwriter(output_encoding)(_sys.stderr)
 
     # HACK: convert sys.argv to Unicode (not needed in Python 3)
     argv_encoding = CONFIG.get('system', 'argv-encoding')