[Zope] Base64 - Encoding/Decoding without external method

Andy Dustman farcepest at gmail.com
Mon Feb 7 17:01:06 EST 2005


On Mon, 7 Feb 2005 22:15:30 +0100, Lombardoni, Andrea
<lombardo at inf.ethz.ch> wrote:
> 
> >> I would like to decode/encode data in base64 without resorting
> >> to an external Python method.
> 
> > The following is in the Python interpreter, but I have verified that
> > it works for Python scripts in Zope.
> 
> >>> "Hello World!".encode('base64')
> >> 'SGVsbG8gV29ybGQh\n'
> >>> 'SGVsbG8gV29ybGQh\n'.decode('base64')
> >> 'Hello World!'
> >>> 'Clguba ebpxf!'.decode('rot13')
> >> u'Python rocks!'
> 
> I tried your suggestion, but it does not work in Zope.
> 
> I createad a simple Script(Python) object like this:
> 
> print 'ciao ciao'.encode('base64')
> return printed
> 
> But when I try to see it from Zope it returns this error:
> 
> Error Type: SystemError
> Error Value: module "encodings.base64" failed to register

Hmmm. I made a Script (Python) called decode with a parameter thing,
and the code:

return thing.decode('base64')

and it works. I am using Zope-2.7.3, and the Test tab on the script

I also made a more general one called base64, with parameters content
and mode, and code:

if mode == "encode":
    return content.encode('base64')
elif mode == "decode":
    return content.decode('base64')
else:
    raise "Unknown mode", mode

This also works for me.

You could do the whole thing as:

return getattr(content, mode)(encoding)

where encoding is also a form variable, but this seems a little unsafe
to expose to the internet. What versions of Zope and Python do you
have? I'm betting you are using Python-2.1, since it does not appear
to have that encoding, whereas 2.2 and newer do.
-- 
Computer interfaces should never be made of meat.

Using GMail? Setting Reply-to address to <> disables this annoying feature.


More information about the Zope mailing list