使用pythonzlib解压用javascript zlib压缩的字符串

使用pythonzlib解压用javascript zlib压缩的字符串,javascript,python,zlib,Javascript,Python,Zlib,在客户端,我使用库对一些字符串进行压缩,然后将其编码为base64以发送到服务器: var a = {"foo" : "bar"}; var deflate = new Zlib.Deflate(JSON.stringify(a)); var compressed = deflate.compress(); var sentToServer = btoa(String.fromCharCode.apply(null, compressed)); >>> "eJwVwwEJAAA

在客户端,我使用库对一些字符串进行压缩,然后将其编码为base64以发送到服务器:

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"
在服务器端,我想用它来解压,但出现了以下错误:

import base64, zlib

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

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

zlib.js
Deflate
接受
数组。
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);
var a={“foo”:“bar”};
var s=JSON.stringify(a);
var数据=新数组(s.长度);
对于(i=0,il=s.length;i
这将产生:
ejwfgeejaaaia7tcdnvw+/a77d7mcrtb8fhxonea==