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

时间:2011-02-10 15:45:41

标签: c# sql-server string binary type-conversion

我需要帮助找出如何将来自 SQL Server 表格列的数据转换为字符串以便显示为 varBinary(max)以显示它在标签中。

这是 C#,我使用 DataReader

我可以使用以下方式提取数据:

var BinaryString = reader[1];

我知道此列包含以前转换为二进制文本的文本。

3 个答案:

答案 0 :(得分:36)

这实际上取决于您最初从字符串转换为二进制时使用的编码:

 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

答案 1 :(得分:9)

二进制数据必须是编码文本 - 您需要知道使用了哪种编码才能准确地将其转换回文本。例如,您可以使用:

byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);

byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);

或其他各种选项......但您需要知道正确的编码。否则就像试图将JPEG文件加载到只读取PNG的图像查看器中......但更糟糕的是,因为如果你得到错误的编码,它可能出现来处理某些字符串。

接下来要解决的问题是为什么它首先被存储为二进制文件...如果它是文本,为什么不以这种方式存储。

答案 2 :(得分:2)

您需要知道用于创建二进制文件的编码。然后你可以使用

System.Text.Encoding.UTF8.GetString(reader[1]);

并根据使用的编码更改UTF8。