[issue1602] windows console doesn't print utf8 (Py30a2)

David-Sarah Hopwood report at bugs.python.org
Tue Jan 11 00:38:44 CET 2011

David-Sarah Hopwood <david-sarah at jacaranda.org> added the comment:

"... os.dup2() ..."

Good point, thanks.

It would work to change os.dup2 so that if its second argument is 0, 1, or 2, it calls _get_osfhandle to get the Windows handle for that fd, and then reruns the console-detection logic. That would even allow Unicode output to work after redirection to a different console.

Programs that directly called the CRT dup2 or SetStdHandle would bypass this. Can we consider such programs to be broken? Methinks a documentation patch for os.dup2 would be sufficient, something like:

"When fd1 refers to the standard input, output, or error handles (0, 1 and 2 respectively), this function also ensures that state associated with Python's initial sys.{stdin,stdout,stderr} streams is correctly updated if needed. It should therefore be used in preference to calling the C library's dup2, or similar APIs such as SetStdHandle on Windows."


Python tracker <report at bugs.python.org>

More information about the Python-bugs-list mailing list