从截获的http包中的数据存成htm文件,发现都是经过gzip压缩的。
用IE和文本打开也都是乱码,将文件存成gz文件后,解压出错。
现在不知道该怎么办了?急死了!请高手们帮帮忙!

解决方案 »

  1.   

    这个问题我跟踪过一些数据,写一点体会,不对请赐教:
    一般来说gzip的内容起先是要包含:
    Content-Encoding: gzip
    Content-Length: 270
    字段的,但我分析了一下,Content-Encoding: gzip是包含的而且是明文,但Content-Length: 270不一定包含,这个字段内容表示后续的gzip压缩内容将是270的宽度。但如果没包含Content-Length: 270的话,则这个宽度的位置是在那个content-type text/html后边的那个数字中说明的,这个数字完毕后,后边有个\r\n, 也就是16进制的0x0d\x0a,接着的以1F 8B 08 00 00 00 00 00 00开头的就是gzip编码,浏览器会根据上述的要求收的宽度一直把要求的收完,全部收完毕后,才能够进行解压缩,这中间不能丢包,丢了数据包会解不出来。
    我曾经把一个字符串用gzip压缩后得到一个新gzip压缩字符串,后来我又把原来这个字符串前多加了一个字符后又用gzip压缩,得到的新gzip压缩字符串与原字符串完全不同(我原以为新得到的gzip字符串会包含原gzip压缩字符串,其实还真不是这么会事),所以这就是我说的一定要把所有gzip全部收完后才能解压缩。当然解压缩的函数是有的。
    这是一点体会,我发现gzip解压缩非常苛刻,甚至一个字符不对,都可能解不出来,
    如果你直接用浏览器打开,浏览器肯定会显示乱码,只有从网站上接收后浏览器内部把他解gzip显示出来才能看明白。
      

  2.   

    codeguru上可以找到g-zip的代码,解压就行。
      

  3.   

    已经有很多gzip的接口ku。下载搞掂咯
      

  4.   

    http://www.codeproject.com/cpp/cgzip.asp