使用Python zlib的解压缩与JavaScript的zlib

问题描述:

在客户端,我用的是zlib.js库缩小一些字符串压缩串,那么我对其进行编码为base64,被发送到服务器:使用Python zlib的解压缩与JavaScript的zlib

var a = {"foo" : "bar"}; 
var deflate = new Zlib.Deflate(JSON.stringify(a)); 
var compressed = deflate.compress(); 
var sentToServer = btoa(String.fromCharCode.apply(null, compressed)); 
>>> "eJwVwwEJAAAAgKD/ry3B5QAdegQ0" 

在服务器端我想用zlib for python27解压缩,但我得到了以下错误:

import base64, zlib 

a = base64.b4decode("eJwVwwEJAAAAgKD/ry3B5QAdegQ0") 
zlib.decompress(a) 
>>>zlib.error: Error -3 while decompressing data: invalid distance too far back 

什么是实现这一目标的正确方法?

zlib.jsDeflate接受Array.<number>Uint8Array,你需要转换JSON来int数组:

var a = {"foo" : "bar"}; 
var s = JSON.stringify(a); 
var data = new Array(s.length); 
for (i = 0, il = s.length; i < il; ++i) { 
    data[i] = s.charCodeAt(i); 
} 
var deflate = new Zlib.Deflate(data); 

这将产生:eJwFgEEJAAAIA7tcDNvow+/A77D7MCtRTB8fHXoENA==

+0

总是downvotes,没有理由,耸肩... – georgexsh

+0

对不起, 不是我... –