使用 python zlib 解压用 javascript zlib 压缩的字符串
Use python zlib to decompress string compressed with javascript zlib
在客户端,我使用 zlib.js 库压缩一些字符串,然后将其编码为 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"
服务器端我想用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.js
的Deflate
接受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==
在客户端,我使用 zlib.js 库压缩一些字符串,然后将其编码为 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"
服务器端我想用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.js
的Deflate
接受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==