Right solution to unicode error?
Hans Mulder
hansmu at xs4all.nl
Thu Nov 8 06:40:11 EST 2012
On 8/11/12 00:53:49, Steven D'Aprano wrote:
> This error confuses me. Is that an exact copy and paste of the error, or
> have you edited it or reconstructed it? Because it seems to me that if
> task.subject is a unicode string, as it appears to be, calling print on
> it should succeed:
>
> py> s = u'ABC\u2013DEF'
> py> print s
> ABC–DEF
That would depend on whether python thinks sys.stdout can
handle UTF8. For example, on my MacOS X box:
$ python2.6 -c 'print u"abc\u2013def"'
abc–def
$ python2.6 -c 'print u"abc\u2013def"' | cat
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in
position 3: ordinal not in range(128)
This is because python knows that my terminal is capable
of handling UTF8, but it has no idea whether the program at
the other end of a pipe had that ability, so it'll fall
back to ASCII only if sys.stdout goes to a pipe.
Apparently the OP has a terminal that doesn't handle UTF8,
or one that Python doesn't know about.
Hope this helps,
-- HansM
More information about the Python-list
mailing list