解压缩由 php 的 gzcompress() 压缩的字符串



数据在php中是这样压缩的

$compressed = gzcompress($pairs, 9);

当我尝试用rust解压获得的数据时:

let mut d = flate2::read::GzDecoder::new(compressed_pairs.as_bytes());
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
println!("{}", s);

我得到这个错误-thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Custom { kind: InvalidInput, error: "invalid gzip header" }',

当我读到这里gzcompress类似于gzencode,但有不同的头。有可能在Rust中解码它吗?

我在这里找到了一个C库,我想我可以把它连接到我的Rust代码,但可能有更简单的解决方案?

请阅读您的文档。

你引用的PHP函数"使用ZLIB数据格式压缩给定的字符串"(尽管被称为gzcompress,但这是PHP标准库,永远不要相信任何函数名)。但是您正在尝试解压缩gzip数据,而不是zlib。文档甚至说"这是,而不是与gzip压缩相同"。

因此,您可能需要使用zlib解码器。

最新更新