pickle KeyError: \x00
分类-Google App Engine
三月 14, 2010 16:49
999 Views 6 Comments
我用pickle 做对象序列化和服务器交换数据
从客户端接收服务器返回的 pickle 序列时没有问题,但是上传数据时发有异常发生了
KeyError: .. \x00
google 一下,在Appengine-patch 的Issues 中看到一个跟帖,从数据库中提取pickle时发生了同样的问题。
有人回复用 blob 代替 text 在数据库中存储,然后我突然就想起来了,自己以前用json时也遇到过类似的问题。
原因是因为 text 存储时,会自动转为unicode 存到数据库中。
而Django 从客户端接收到POST数据后也会自动的decode为unicode,所有原先的序列就破坏了。
另外Django返回HttpResponse 时不会返回unicode的,所以接收服务器返回的pickle序列不会改变。
特此记下