首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error

Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error

作者头像
用户12023652
发布2026-07-29 09:34:10
发布2026-07-29 09:34:10
360
举报

使用gzdeflate压缩的数据,在使用gzinflate解压的时候竟然报错,错误为data error

代码语言:javascript
复制
$msg =gzdeflate("testmsg", 6, ZLIB_ENCODING_DEFLATE);
echo gzinflate($msg);

后来测试,不用参数ZLIB_ENCODING_DEFLATE,可以正常解压,用了就报错

网上找了一堆解答,都不对,最后试了用gzuncompress解压,成功了

php四对压缩函数

  • gzdeflate和gzinflate 压缩效率中 默认使用是纯粹的DEFLATE格式
  • gzcompress和gzuncompress 压缩效率高 使用的是ZLIB格式
  • bzcompress和bzuncompress 压缩效率高
  • gzencode和gzdecode 压缩效率最低 使用的是GZIP格式;

从PHP 5.4.0开始,gzcompressgzdeflate函数加入了第三个参数$encoding,可以是三个常量:

  • ZLIB_ENCODING_RAW 对应于纯DEFLATE格式;
  • ZLIB_ENCODING_GZIP 对应于GZIP格式;
  • ZLIB_ENCODING_DEFLATE 对应于ZLIB格式(注意不是纯DEFLATE格式)

Data error的原因是

  • gzdeflate+ ZLIB_ENCODING_DEFLATE 参数实际等同于gzcompress
  • 所以可以使用gzuncompress去解压缩,而使用gzinflate去解压缩反而报错

HTTP协议中的Content-Encoding: deflate使用的是ZLIB格式而不是纯DEFLATE格式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档