Unicode failure

Oscar Benjamin oscar.j.benjamin at gmail.com
Fri Dec 4 17:54:49 EST 2015


On 4 Dec 2015 22:34, "D'Arcy J.M. Cain" <darcy at vybenetworks.com> wrote:
>
> I thought that going to Python 3.4 would solve my Unicode issues but it
> seems I still don't understand this stuff.  Here is my script.
>
> #! /usr/bin/python3
> # -*- coding: UTF-8 -*-
> import sys
> print(sys.getdefaultencoding())
> print(u"\N{TRADE MARK SIGN}")
>
> And here is my output.
>
> utf-8
> Traceback (most recent call last):
>   File "./g", line 5, in <module>
>     print(u"\N{TRADE MARK SIGN}")
> UnicodeEncodeError: 'ascii' codec can't encode character '\u2122' in
> position 0: ordinal not in range(128)
>
> What am I missing?

The important thing is not the default encoding but the encoding associated
with stdout. Try printing sys.stdout.encoding to see what that is. It may
depend what terminal you're trying to print out in. Are you using cmd.exe?
If on Unix what's the value of LANG environment variable?

--
Oscar



More information about the Python-list mailing list