print vs sys.stdout.write, and UnicodeError

Martin Marcher martin at marcher.name
Thu Oct 25 15:06:22 EDT 2007


25 Oct 2007 17:37:01 GMT, Brent Lievers <3wbl at qlink.queensu.ca>:
> Greetings,
>
> I have observed the following (python 2.5.1):
>
> >>> import sys
> >>> print sys.stdout.encoding
> UTF-8
> >>> print(u'\u00e9')
> é
> >>> sys.stdout.write(u'\u00e9\n')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in
> position 0: ordinal not in range(128)

>>> sys.stdout.write(u'\u00e9\n'.encode("UTF-8"))
é

> Is this correct?  My understanding is that print ultimately calls
> sys.stdout.write anyway, so I'm confused as to why the Unicode error
> occurs in the second case.  Can someone explain?

you forgot to encode what you are going to "print" :)

-- 
http://noneisyours.marcher.name
http://feeds.feedburner.com/NoneIsYours


More information about the Python-list mailing list