这可能是一个非常本地化的问题,对社区的其他人没有用,但希望有人可以帮助我。
我知道的
我有一个 base64 编码的 ZIP,在一个字符串中,在一个 XML 元素内。
该文件如下所示:
<Document>
<Content vesion="1"><!-- BASE64 STRING ---></Content>
</Document>
我想做的事
解码字符串,然后解压缩。
到目前为止我尝试过的(但失败了)
解码 base64 字符串并将其放入带有 zip 扩展名的文件中
public string DecodeFrom64(string encodedData) { byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData); string returnValue = System.Text.Encoding.Unicode.GetString(encodedDataAsBytes); return returnValue; }
尝试使用以下函数解压缩字符串:
public static string DecompressString(string compressedText) { byte[] gZipBuffer = Convert.FromBase64String(compressedText); using (var memoryStream = new MemoryStream()) { int dataLength = BitConverter.ToInt32(gZipBuffer, 0); memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4); 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); } }
得到错误:
GZip 标头中的幻数不正确。确保您传递的是 GZip 流...
尝试使用以下函数解压缩字符串:
public static string UnZipStr(string compressedText) { byte[] input = Convert.FromBase64String(compressedText); using (MemoryStream inputStream = new MemoryStream(input)) { using (DeflateStream gzip = new DeflateStream(inputStream, CompressionMode.Decompress)) { using (StreamReader reader = new StreamReader(gzip, System.Text.Encoding.UTF8)) { return reader.ReadToEnd(); } } } }
得到错误:
块长度与其补码不匹配...
我向向我的客户发送此 XML 数据的人发送了一封邮件,但问题是他们的响应速度非常慢(3-4 周)。
所以我希望有人能指出我正确的方向。
我不能将文件附加到问题中,所以如果有人想看看它,我可以发送邮件或其他什么?