[Python-3000] pickle compatibility between 2.x and 3.0

Guido van Rossum guido at python.org
Sat Nov 3 23:19:32 CET 2007

On 11/3/07, Georg Brandl <g.brandl at gmx.net> wrote:
> Alexandre Vassalotti schrieb:
> > On 11/1/07, Guido van Rossum <guido at python.org> wrote:
> >> When 3.0 encounters a 'str' object in a pickle written by 2.x, it has
> >> two choices: trying to convert it to a 3.0 (unicode) str object by
> >> applying some encoding, or interpreting it as a 3.0 bytes object.
> >
> > Currently, pickle decodes old string objects using latin-1. To me,
> > these seems to be a reasonable default (IMHO,
> > sys.getfilesystemencoding() would be slightly better). However, having
> > a default encoding might hide decoding errors. So, it may be a better
> > idea to simply return bytes by default and leave it to the application
> > to specify the encoding in the unpickling call.
> +1 for that. If no encoding is given, return bytes; if encoding (and
> possibly an errors argument) is given, return Unicode.

Right, this is exactly what I was originally suggesting. I still like
it better than any of the more elaborate proposals. As someone said,
you can do anything by subclassing Unpickler.

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-3000 mailing list