Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL Server varBinary数据转换为字符串C#_C#_Sql Server_String_Binary_Type Conversion - Fatal编程技术网

将SQL Server varBinary数据转换为字符串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

我需要帮助了解如何将来自设置为varBinary(max)SQL Server表列的数据转换为字符串,以便在标签中显示

这是在C#中,我使用的是数据阅读器

我可以使用以下方式拉入数据:

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);