gzip,deflate的关系,有人知道吗?

love521bean 2009-04-08 05:26:42
看java的java.util.zip里面gzip和deflate是分开的,也就是说各自压缩各自的,没有关联。
但是看网上对HTTP报文的压缩介绍,都是一块儿说的,gzip,deflate。。
这两个是一种压缩吗?能用一种算法解压和压缩吗?
之间是什么关系?

我试了一下java里面的方法,这两种是没有办法互相解得。
那在web中,如果这两种都支持的话,网站会压缩哪一种?
谢谢啦~~
...全文
2673 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
love521bean 2009-04-08
  • 打赏
  • 举报
回复
刚才又试了一下,发现用deflate压缩后,用gzipinputstream进行解压时说not in gzip format
love521bean 2009-04-08
  • 打赏
  • 举报
回复
想对http中的gzip,deflate格式进行压缩和解压,所以才有了这个问题,
如果哪位知道如何对这两种压缩进行处理的包或者代码就更好啦。。

谢谢~
love521bean 2009-04-08
  • 打赏
  • 举报
回复
有点儿高深。。。
我现在用java.util.zip里面的deflate和inflate进行压缩和解压deflate格式
用GZIPOutputStream和GZIPInputStream进行压缩和解压gzip格式

这样可以吗??
skycc999 2009-04-08
  • 打赏
  • 举报
回复
deflate 是最基础的算法,gzip 在 deflate 的 raw data 前增加了 10 个字节的 gzheader,尾部添加了 8 个字节的校验字节(可选 crc32 和 adler32) 和长度标识字节。
skycc999 2009-04-08
  • 打赏
  • 举报
回复
gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。

deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。


81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧