如果我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();
}
Run Code Online (Sandbox Code Playgroud)
结果流长133个字节
通过Fiddler Utilities.GzipCompress或此PHP页面运行相同的字符串,结果只有31个字节长.
在这两种情况下,输入都是11个字节,所以我认为PHP结果是正确的,但显然这意味着我无法从.NET内解压缩PHP zip,反之亦然.为什么.NET输出这么大?
实际上事实证明,尽管PHP和Fiddler的结果长度相同,但它们并不相同.我可以在.NET中解压缩PHP版本,但不能解压缩Fiddler版本.PHP页面解压缩这三个,所以看起来Fiddler和.NET的gzip实现之间可能存在不兼容性.
按照要求,我上传的三个输出到收存箱这里.
这些是这些文件的原始hexdump(不确定它们是否真的像这样使用,但我认为它表明fiddler和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 2f ca-49 01 00 56-b1 17 4a 0b-00 00 00 ../.I..V ..J....
Run Code Online (Sandbox Code Playgroud)
PHP:
0000-0010: 1f 8b 08 00-00 00 00 00-00 03 …Run Code Online (Sandbox Code Playgroud)