-
使用gzdeflate压缩的数据,在使用gzinflate解压的时候竟然报错,错误为data error
-
$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开始,
gzcompress
和gzdeflate
函数加入了第三个参数$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格式。