How to get a unicode degrees symbol?

Russell E. Owen owen at astrono.junkwashington.emu
Wed Jun 6 13:04:38 EDT 2001

In article <zd8T6.1995$WW6.242950 at>,
 "Fredrik Lundh" <fredrik at> wrote:

>Russell E. Owen wrote:
>> I'm obvious missing some important bit of documentation, but I looked
>> through the manuals and can't seem to figure out how to get unicode
>> character constants into python strings.
>not sure how you managed to miss this one:
>...(more useful info omitted)
>if you want the same content, but want to print it in different ways
>depending on the platform's display encoding, you can use the encode
>method on the way out.  examples:
>    u = u"\N{DEGREE SIGN}"
>    print u.encode("iso-8859-1") # unix (us/western europe)
>    print u.encode("cp1252") # windows
>    print u.encode("macroman") # macintosh
>    print u.encode("cp850") # dos window
>if the target encoding doesn't have a degree sign, encode will raise
>an exception.  if you don't want that, pass "replace" or "ignore" as
>the second argument.

Thank you very much.

My main goal is to display the degree symbol (for example) on the 
current platform -- in a way that Tk, etc. can all handle it as a normal 

Apparently this requires encoding the data as an ascii string. OK, but 
surely there must be some simple way to do this that doesn't require a 
big case statement (if platform x then use encoding y...) and knowing 
the name of the most appropriate encoding for each platform?


As to how I managed to miss the documentation link. I don't mean to 
sound ungrateful to anybody involved with Python, but in fact that was 
quite a battle when I first tried to figure it out. At the time I was 
using 2.0, but I retraced my steps today, just for the heck of it, using 
the 2.1 manuals.

I started with my local copy of "Python Documentation", the launching 
point for most or all documentation.

It lists the Global Module Index as being "for quick access to all 
documentation", so I started there (with some misgivings, since I knew 
strings were a built in type). The page of links sure looked promising, 
so I clicked on "string", but found myself in a description of the 
(obsolete, I think?) string module, with no pointers out to  unicode or 
the built in data type. An up link points to "string services" which at 
least has an entry for "unicodedata", but was still a dead end for more 
info about strings.

So my next try was the Python Library Reference. Alas, it's table of 
contents doesn't have an entry for "string". However, I knew enough 
about Python (barely) to try "Sequence Types", but I wasn't feeling very 

That section does mention strings and has a link to the entry you 
suggested -- the string literal description in the Python Reference 
Manual. By the way, Python Documentation lists that as "Language 
Reference (for language lawyers)" -- not promising, and I wasn't even 
sure they were the same document until I did some hunting around.

At that point I knew how to generate unicode characters, but had no idea 
which ones were which. Not a big hassle -- I realized I could probably 
find unicode documentation on line fairly easily -- but another 
roadblock. Also, I did find a link to unicode today in retracing my 
steps, but don't quite remember where it was -- it's not in the Python 
Reference section on string literals.

Anyway, at that point I realized I could generate unicode characters, so 
I tried a few, just for fun. I quickly found I could not display them 
(for instance str() raised an exception. At that point I gave up, until 
my recent posting.

Far more than you wanted to know, I'm sure. With a few extra links 
sprinkled throughout that whole process could have been nicely shortcut 
with a somewhat happier ending. I'd be happy to add these myself if 
anybody is willing to receive the edited pages. (I can also use cvs -- 
as very much a neophyte -- but imagine I don't have checkin permission).

-- Russell

More information about the Python-list mailing list