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序列不会改变。

 

特此记下

COMMENTS | 评论

自言自语  --  发表新文章 管理

Powered by pLite :)  由 Google AppEngine 强力驱动