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

Decompress string compressed by php's gzcompress()

所以我用这种方式在 php 中压缩了数据:

$compressed = gzcompress($pairs, 9);

当我尝试用这种方式解压得到的数据时:

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" }',

据我阅读here gzcompress 与gzencode 类似,但有不同header。 可以用 Rust 解码吗?

I found out here 一个 C 库,我认为我可以将它连接到我的 Rust 代码,但可能有更简单的解决方案?

请阅读您的文档。

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

因此您可能想使用 a zlib decoder