在 C# 中解压 SQL 服务器压缩的 varbinary 数组

Decompress SQL Server compressed varbinary Array in C#

我在 SQL 服务器中有一个 table,其中有一个 varbinary(MAX) 列,其中填充了 JSON 字符串的 SQL Compress 方法使用 utf8 字符,例如 sql 中的 {"id": 12, title: "فروش"} 我使用 CAST(DECOMPRESS(data) AS NVARCHAR(MAX)) 结果没问题。

在 c# 中,我使用此代码解压缩数据列:

public static string Unzip(byte[] bytes)
{
    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream())
    {
        using (var gs = new GZipStream(msi, CompressionMode.Decompress))
        {
            CopyTo(gs, mso);
        }
        return Encoding.UTF8.GetString(mso.ToArray());
    }
}

但结果是一个无效的字符串:

在你的 SELECT 你应该使用 DECOMPRESS

来源:

https://docs.microsoft.com/it-it/sql/t-sql/functions/decompress-transact-sql?view=sql-server-ver15

我认为您的字符串格式为“Unicode”,但您正在尝试使用 UTF8 编码类型?