mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Minimal fix for the complaints about pickling Unicode objects. (SF
bugs #126161 and 123634). The solution doesn't use the unicode-escape encoding; that has other problems (it seems not 100% reversible). Rather, it transforms the input Unicode object slightly before encoding it using raw-unicode-escape, so that the decoding will reconstruct the original string: backslash and newline characters are translated into their \uXXXX counterparts. This is backwards incompatible for strings containing backslashes, but for some of those strings, the pickling was already broken.
This commit is contained in:
parent
20d3fc071b
commit
a31b4ef7c5
1 changed files with 2 additions and 0 deletions
|
@ -291,6 +291,8 @@ class Pickler:
|
|||
s = mdumps(l)[1:]
|
||||
self.write(BINUNICODE + s + encoding)
|
||||
else:
|
||||
object = object.replace(u"\\", u"\\u005c")
|
||||
object = object.replace(u"\n", u"\\u000a")
|
||||
self.write(UNICODE + object.encode('raw-unicode-escape') + '\n')
|
||||
|
||||
memo_len = len(memo)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue