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

Per*_*ddy 18 c# sql-server string binary type-conversion

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

这是在C#中我正在使用DataReader.

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

var BinaryString = reader[1];
Run Code Online (Sandbox Code Playgroud)

我知道这个专栏保存以前转换为二进制的文本.

Luk*_*keH 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
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 9

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

byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
Run Code Online (Sandbox Code Playgroud)

要么

byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);
Run Code Online (Sandbox Code Playgroud)

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

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