《使用base64编码解决json序列化zlib压缩出现的报错》

正如标题那样,我这边用python requests把网页的数据爬取下来,因为网页的源码空间有些大,所有会考虑使用zlib进行压缩,但是json针对zlib的数据序列化时会报错.


文章写的不是很严谨,欢迎来喷,另外该文后续有更新的,请到原文地址查看更新。

http://xiaorui.cc/2016/01/26/%E4%BD%BF%E7%94%A8base64%E7%BC%96%E7%A0%81%E8%A7%A3%E5%86%B3json%E5%BA%8F%E5%88%97%E5%8C%96zlib%E5%8E%8B%E7%BC%A9%E5%87%BA%E7%8E%B0%E7%9A%84%E6%8A%A5%E9%94%99/

下面是报错信息.

会爆出UnicodeDecodeError: ‘utf8′ codec can’t decode byte 0x9c in position 1: invalid start byte 的错误, 这问题一般是编码的问题,算是常见的.    我们再来细化可能问题的流程.

这问题实在是诡异,json.dumps的时候会把对象通过转成unicode进行转换成字符串,但数据被改成zlib后,是无法解析编码的.

解决的方法是加一层base64编码.

或者是改变序列化工具,使用msgpack替换json.

END.  如果不是web api的话,可以直接选用msgpack,因为如果你又是zlib,又是base64他的cpu消耗要比msgpack多的.



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

发表评论