我将大量的XML从PHP传递给C Sharp,因此选择了gzip。但是,C Sharp中生成的未压缩字符串最后会有大量的空白
PHP方面
echo base64_encode(gzencode($settings,9));
C锋利的一面
private static string _gzipDecompress(string compressedText)
{
byte[] gZipBuffer = Convert.FromBase64String(compressedText);
using (var memoryStream = new MemoryStream())
{
int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
memoryStream.Write(gZipBuffer, 0, gZipBuffer.Length);
var buffer = new byte[dataLength];
memoryStream.Position = 0;
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
}
解压缩工作正常,但生成的字符串长度为559903(string.Length),因为字符串末尾有大量的空格,实际上应该是6629。
我在这里缺少什么?