将SQL Server varBinary数据转换为字符串C#
我需要帮助了解如何将来自设置为varBinary(max)的SQL Server表列的数据转换为字符串,以便在标签中显示 这是在C#中,我使用的是数据阅读器 我可以使用以下方式拉入数据:将SQL Server varBinary数据转换为字符串C#,c#,sql-server,string,binary,type-conversion,C#,Sql Server,String,Binary,Type Conversion,我需要帮助了解如何将来自设置为varBinary(max)的SQL Server表列的数据转换为字符串,以便在标签中显示 这是在C#中,我使用的是数据阅读器 我可以使用以下方式拉入数据: var BinaryString = reader[1]; 我知道此列包含以前转换为二进制的文本。这实际上取决于最初从字符串转换为二进制时使用的编码: byte[] binaryString = (byte[])reader[1]; // if the original encoding was ASC
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
您需要知道创建二进制文件使用了什么编码。然后你可以用
System.Text.Encoding.UTF8.GetString(reader[1]);
并将UTF8更改为使用的任何编码。二进制数据必须是编码文本-您需要知道使用了哪种编码才能将其准确地转换回文本。例如,您可以使用:
byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
或
或者其他各种选择。。。但是你需要知道正确的编码。否则,这就像试图将JPEG文件加载到只读取PNG的图像查看器中。。。但更糟糕的是,如果编码错误,可能会对某些字符串起作用
接下来要解决的问题是为什么它首先被存储为二进制。。。如果它是文本,为什么不这样存储呢;给我一个错误,无法将类型“object”隐式转换为“byte[]”。存在显式转换…@Kronprinz:Oops,是的,它需要显式转换。我刚刚编辑了答案以包含它。您可以接受这个答案,因为它是正确的。它可以帮助其他人以后快速找到正确的解决方案。
byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);