我有C#程序,该程序接收iso-8859-1字符集中接收的压缩比特流。我需要获取被压缩的字符串。它应该等效于以下python代码:
zlib.decompress(bytes(bytearray(json_string, 'iso8859')), 15+32).
我尝试使用此代码进行解压缩:
Encoding iso_8859_1 = Encoding.GetEncoding("iso-8859-1");
byte[] isoBytes = iso_8859_1.GetBytes(inputString);
// then do GZip extract
MemoryStream objMemStream = new MemoryStream();
objMemStream.Write(isoBytes, 0, isoBytes.Length);
objMemStream.Seek(0, SeekOrigin.Begin);
GZipStream objDecompress = new GZipStream(objMemStream, CompressionMode.Decompress);
但是,objDecompress.Read失败,所以我做错了。
*****编辑31/03
执行压缩的Java代码是:
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(JsonStr.getBytes());
gzip.close();
return out.toString("ISO-8859-1");
我需要一个C#代码来获取JsonStr。希望获得帮助。
DeflateStream
DeflateStream
类中有内置程序,但我无法扭转这种情况,可能是因为GZipStream
具有默认常量,例如GZipStream
。在此DotNet运行时问题ZLibNative
]中,对此主题进行了讨论。
有ZLibNative
NuGet包,可用于解压缩数据。您可以在public const int Deflate_DefaultWindowBits = -15
处阅读简单的压缩/解压缩实现。
public const int Deflate_DefaultWindowBits = -15
将输出:
"System.IO.Compression to support zlib thin wrapper over DEFLATE?"C#解压缩
zlib.net
将输出:
zlib.net
您可以检查它是否在此Compression and decompression problem with zlib.Net中正常工作。