Tag: gzipstream

为什么我的C#gzip生成比Fiddler或PHP更大的文件?

如果我GZip这个文本: 你好,世界 通过C#使用这个代码: Stream stream = new MemoryStream(Encoding.Default.GetBytes("Hello World")); var compressedMemoryStream = new MemoryStream(); using (var gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress)) { stream.CopyTo(gzipStream); gzipStream.Close(); } 结果stream是133字节长 通过Fiddler的Utilities.GzipCompress或这个PHP页面运行相同的string,结果只有31个字节长。 在这两种情况下,input是11个字节,所以我可以想象PHP的结果是正确的,但显然这意味着我不能从.NET中解压缩PHP zip,反之亦然。 为什么.NET的输出更大? 事实上,PHP和Fiddler的结果是相同的,但它们并不相同。 我可以在.NET中解压缩PHP版本,但不能提供Fiddler版本。 PHP页面解压所有这三个,所以看起来好像在Fiddler和.NET的gzip实现之间可能是不兼容的。 按照要求,我已经在这里上传了三个输出到Dropbox。 这些是这些文件的原始hexdumps(不知道他们是否真的有这样的使用,但我认为这表明,提琴手和PHP版本之间的区别是在头,而不是压缩的数据本身): 小提琴手: 0000-0010: 1f 8b 08 00-c2 e6 ff 4f-00 ff f3 48-cd c9 c9 57 …….O …H…W 0000-001f: 08 cf […]