首页 > Web开发 > 详细

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

时间:2021-07-02 15:15:43      阅读:24      评论:0      收藏:0      [点我收藏+]
  1. 使用gzdeflate压缩的数据,在使用gzinflate解压的时候竟然报错,错误为data error

    • $msg =gzdeflate("testmsg", 6, ZLIB_ENCODING_DEFLATE);
      echo gzinflate($msg);
      
  2. 后来测试,不用参数ZLIB_ENCODING_DEFLATE,可以正常解压,用了就报错

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

  4. php四对压缩函数

    • gzdeflate和gzinflate 压缩效率中 默认使用是纯粹的DEFLATE格式
    • gzcompress和gzuncompress 压缩效率高 使用的是ZLIB格式
    • bzcompress和bzuncompress 压缩效率高
    • gzencode和gzdecode 压缩效率最低 使用的是GZIP格式;
  5. 从PHP 5.4.0开始,gzcompressgzdeflate函数加入了第三个参数$encoding,可以是三个常量:

    • ZLIB_ENCODING_RAW 对应于纯DEFLATE格式;
    • ZLIB_ENCODING_GZIP 对应于GZIP格式;
    • ZLIB_ENCODING_DEFLATE 对应于ZLIB格式(注意不是纯DEFLATE格式)
  6. Data error的原因是

    • gzdeflate+ ZLIB_ENCODING_DEFLATE 参数实际等同于gzcompress
    • 所以可以使用gzuncompress去解压缩,而使用gzinflate去解压缩反而报错
  7. HTTP协议中的Content-Encoding: deflate使用的是ZLIB格式而不是纯DEFLATE格式。

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

原文:https://www.cnblogs.com/qumogu/p/14962704.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!