C#-如何解压缩ISO-8859-1字符串

问题描述 投票:0回答:1

我有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。希望获得帮助。

c# compression iso-8859-1
1个回答
0
投票

DeflateStream DeflateStream类中有内置程序,但我无法扭转这种情况,可能是因为GZipStream具有默认常量,例如GZipStream。在此DotNet运行时问题ZLibNative]中,对此主题进行了讨论。

ZLibNative NuGet包,可用于解压缩数据。您可以在public const int Deflate_DefaultWindowBits = -15处阅读简单的压缩/解压缩实现。

Python压缩
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中正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.