将SQL Server varBinary数据转换为字符串C#

我需要帮助找出如何将来自设置为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。