在 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 编码类型?
我在 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 编码类型?