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

Georg Brandl g.brandl at gmx.net
Sat Nov 3 21:07:28 CET 2007

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.


Thus spake the Lord: Thou shalt indent with four spaces. No more, no less.
Four shall be the number of spaces thou shalt indent, and the number of thy
indenting shall be four. Eight shalt thou not indent, nor either indent thou
two, excepting that thou then proceed to four. Tabs are right out.

More information about the Python-3000 mailing list