解码 PHP 中的 gzip 字符串
Decoding a gzipped string in PHP
我正在尝试使用 PHP 解码 REST 响应 (YouTrack-API) 的压缩 body。似乎没有任何效果:
- 从 CURL 自动解码什么都不做
- 使用 Guzzle 和 headers 设置接受编码什么都不做
- 简单地将获取的字符串放入 gzdecode() 没有任何作用
我试过 gzinflate、gzdecode 和它们的一些疯狂组合,包括在开始和结束处剥离字节,但没有成功。我绝不是压缩方面的专家,所以我不知道 gzip 字符串是否可以采用不同的格式,但是任何旧的 'online gzip service' 都可以毫无问题地解码字符串
简单示例:
这个字符串:
H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA=
应该输出:
Hello old world
放入我能找到的任何在线转换器,它有效,放入任何 PHP 函数:数据错误。
PHP 和 gzip 根本不起作用是怎么回事?它与整个响应被压缩或仅与内容有关吗?
gzipped 字符串是 base64 编码的,所以你需要做:
echo gzdecode(base64_decode('H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA='));
我正在尝试使用 PHP 解码 REST 响应 (YouTrack-API) 的压缩 body。似乎没有任何效果:
- 从 CURL 自动解码什么都不做
- 使用 Guzzle 和 headers 设置接受编码什么都不做
- 简单地将获取的字符串放入 gzdecode() 没有任何作用
我试过 gzinflate、gzdecode 和它们的一些疯狂组合,包括在开始和结束处剥离字节,但没有成功。我绝不是压缩方面的专家,所以我不知道 gzip 字符串是否可以采用不同的格式,但是任何旧的 'online gzip service' 都可以毫无问题地解码字符串
简单示例: 这个字符串:
H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA=
应该输出:
Hello old world
放入我能找到的任何在线转换器,它有效,放入任何 PHP 函数:数据错误。 PHP 和 gzip 根本不起作用是怎么回事?它与整个响应被压缩或仅与内容有关吗?
gzipped 字符串是 base64 编码的,所以你需要做:
echo gzdecode(base64_decode('H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA='));