Characters in Python
ngterry2000 at yahoo.com.hk
Sat Jun 7 05:00:17 CEST 2003
In IDLE, you just have to open a module called site
(site.py) and find this:
# Set the string encoding used by the Unicode
# default is 'ascii', but if you're willing to
experiment, you can
# change this.
encoding = "utf-8" #modify this
details can be found in FAQ
--- Paul Boddie <paul at boddie.net> wrote: >
jansun at home.se (Jan Sundström) wrote in message
news:<aaf09156.0306050423.21b45f6 at posting.google.com>...
> > str = 'Åäö'
> > print str
> > Python, or perhaps IDLE rather, doesn't seem
> toaccept characters with
> > codes over 127.
> This reference might be interesting:
> However, I see the same problem with IDLE from the
> ActiveState Python
> 2.2 distribution. Using IDLEfork instead seems to be
> a good solution:
> It turns out that you can do exactly what you wanted
> in IDLEfork.
> > Is there a simple way to turn off this obscession
> with 7-bit ASCII?
> The above reference would suggest that it isn't a
> point of obsession
> but an oversight carried over from an earlier time.
> Anyway, as a point
> of reference it should be noted that ASCII is a 7
> bit standard, if not
> officially (but I think it actually is) then for
> most intents and
> purposes you should consider it to be so. I imagine
> that you actually
> mean, "Can I work with strings in my own encoding?"
> With IDLEfork, the
> answer is yes.
> Personally, I think that most people would be better
> off working with
> Unicode. In IDLEfork you can actually print Unicode
> objects directly.
> However, in console environments, Python gets rather
> upset at the mere
> suggestion - see below for a workable approach.
> > And how can one easily change what Python
> considers to be
> > default character encoding?
> > I couldn't find anything about that in the
> To get your default encoding, at least, try this:
> import locale
> locale.setlocale(locale.LC_ALL, "")
> Apparently, you should only ever do this once in
> your program, and you
> shouldn't do it in a library. Then try this:
> encoding = locale.getlocale()
> Sadly, in Windows environments, this may return
> something like "1252"
> which isn't enough for my next suggestion: to
> convert strings to
> Unicode, do this:
> u = unicode(s, encoding) # don't use 'str' for
> your variable since
> # it's a built-in
> On Windows, try this kind of thing instead:
> u = unicode(s, "cp1252")
> To write Unicode out to your console, try this:
> print u.encode(encoding)
> This works on IDLEfork, too, so for success in both
> DOS boxes and
> IDLEfork I'd suggest explicit encoding of Unicode
> objects when
> printing stuff out.
Do You Yahoo!?
Get your free @yahoo.com.hk address at http://mail.english.yahoo.com.hk
More information about the Python-list