Unicode, stdout, and stderr

Frank Millman frank at chagford.com
Tue Jul 22 03:41:38 EDT 2014


"Peter Otten" <__peter__ at web.de> wrote in message 
news:lql3am$2q7$1 at ger.gmane.org...
> Frank Millman wrote:
>
>> Hi all
>>
>> This is not important, but I would appreciate it if someone could explain
>> the following, run from cmd.exe on Windows Server 2003 -
>>
>> C:\>python
>> Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32
>> bit (In
>> tel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> x = '\u2119'
>>>>> x  # this uses stderr
>> '\u2119'
>
> No, both print to stdout, but just
>
>>>> x
>
> is passed to the display hook of the interactive interpreter. This applies
> repr() and  then tries to print the result. If this fails it makes another
> effort, roughly (the actual code is written in C)
>
> sys.stdout.buffer.write(repr(x).encode(
>    sys.stdout.encoding, "backslashreplace"))
>
>

Thanks, Peter. Very interesting.

Out of interest, does the same thing happen when writing to sys.stderr?

Frank






More information about the Python-list mailing list