[Python-Dev] Re: Multibyte repr()

Guido van Rossum guido@python.org
Thu, 10 Oct 2002 20:04:05 -0400


> > I tried this, and I could not find any problems with the resulting
> > pickle.  The pickle looks like this:
> > 
> > "S'\\x83\\\\'\np0\n."
> > 
> > I couldn't get this to fail loading in Python 2.1, 2.2 or 2.3 (CVS);
> > I tried both pickle and cPickle.
> 
> May be you tried with ascii or latin-1 locale. But with Japanese
> ShiftJIS encoding, you'll see the traceback on unpickling. 
> 
> I tried CVS version of python on Japanese edition of Win2000, I got:
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "C:\cygwin\home\ishimoto\wk\python\dist\src\lib\pickle.py", line 1071, in loads
>     return Unpickler(file).load()
>   File "C:\cygwin\home\ishimoto\wk\python\dist\src\lib\pickle.py", line 675, in load
>     dispatch[key](self)
>   File "C:\cygwin\home\ishimoto\wk\python\dist\src\lib\pickle.py", line 754, in load_string
>     self.append(rep.decode("string-escape"))
> ValueError: Trailing \ in string

Oops.  It looks like this is the nail in the coffin of the
locale-specific repr(): a multibyte "character" may end in a backslash
that is not escaped.

Martin, I'm afraid there's nothing we can do except revert your
multibyte character checkins...

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