Characters in Python

Terence Ng 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
implementation.  The
# 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:
> 
>  
>
http://mail.python.org/pipermail/patches/2002-February/007368.html
> 
> However, I see the same problem with IDLE from the
> ActiveState Python
> 2.2 distribution. Using IDLEfork instead seems to be
> a good solution:
> 
>   http://idlefork.sourceforge.net
> 
> 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
> tutorial.
> 
> 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()[1]
> 
> 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.
> 
> Paul
> -- 
> http://mail.python.org/mailman/listinfo/python-list 

_______________________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com.hk address at http://mail.english.yahoo.com.hk





More information about the Python-list mailing list