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

《使用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多的.


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">