[Python-Dev] "data".decode(encoding) ?!

M.-A. Lemburg mal@lemburg.com
Fri, 11 May 2001 11:34:25 +0200


Michael Hudson wrote:
> 
> "M.-A. Lemburg" <mal@lemburg.com> writes:
> 
> > I've attached the patch. Due to a small reorganisation the patch is
> > a little longer -- symmetry has its price at C level too ;-)
> 
> I may be being dense, but can you explain what's going on here:
> 
> ->> u'\u00e3'.encode('latin-1')
> '\xe3'
> ->> u'\u00e3'.encode("latin-1").decode("latin-1")
> Traceback (most recent call last):
>   File "<input>", line 1, in ?
> UnicodeError: ASCII encoding error: ordinal not in range(128)

The string.decode() method will try to reuse the Unicode
codecs here. To do this, it will have to convert the string
to Unicode first and this fails due to the character not being
in the ASCII range.

> Can you come up with some other example I can use it tomorrow's
> python-dev summary?

I will add some codecs which make the .decode() method useful
next week. The ones I have in mind are base64, hex and some of
the other binascii codecs. Also, the ROT13 codec I posted will
go into the core as simple example.

With those you will be able to write:

data.encode('base64').decode('base64')

and get back data.

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/