New submission from Steven D'Aprano <st...@pearwood.info>: Documentation for files states that when writing to a file, unicode strings are converted to byte strings using the encoding specified by file.encoding. http://docs.python.org/library/stdtypes.html#file.encoding
sys.stdout is a file, but it does not behave as stated above: >>> type(sys.stdout) <type 'file'> >>> sys.stdout.encoding 'UTF-8' >>> u = u"\u554a" >>> print u 啊 >>> sys.stdout.write(u) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\u554a' in position 0: ordinal not in range(128) >>> sys.stdout.write(u.encode('utf-8')) 啊 ---------- messages: 79849 nosy: stevenjd severity: normal status: open title: sys.stdout fails to use default encoding as advertised versions: Python 2.5, Python 2.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue4947> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com