我需要帮助解决如何将从设置为 varBinary(max) 的 SQL Server 表列中获取的数据转换为字符串,以便在标签中显示。
这是在 C# 中完成的,并且我正在使用 DataReader。
我可以使用以下方法提取数据:
var BinaryString = reader[1];
我知道这一列包含之前转换为二进制的文本。
我需要帮助解决如何将从设置为 varBinary(max) 的 SQL Server 表列中获取的数据转换为字符串,以便在标签中显示。
这是在 C# 中完成的,并且我正在使用 DataReader。
我可以使用以下方法提取数据:
var BinaryString = reader[1];
我知道这一列包含之前转换为二进制的文本。
这主要取决于在最初将字符串转换为二进制时使用的编码方式:
byte[] binaryString = (byte[])reader[1];
// if the original encoding was ASCII
string x = Encoding.ASCII.GetString(binaryString);
// if the original encoding was UTF-8
string y = Encoding.UTF8.GetString(binaryString);
// if the original encoding was UTF-16
string z = Encoding.Unicode.GetString(binaryString);
// etc
二进制数据必须是编码文本 - 你需要知道所使用的编码方式,才能准确地将其转换回文本。例如,你可能会使用:
byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
或者byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);
或者其他各种选项...但是你需要知道正确的编码方式。否则就像尝试将JPEG文件加载到仅读取PNG的图像查看器中一样...但更糟糕,因为如果选择了错误的编码方式,则某些字符串可能会表面上正常工作。
接下来要解决的问题是为什么首先以二进制形式存储它...如果它是文本,那么为什么不以文本形式存储。
System.Text.Encoding.UTF8.GetString(reader[1]);
并将UTF8更改为使用的任何编码。