数据在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解码器。