Преобразование двоичных данных SQL Server в строку С#

Мне нужна помощь в том, как конвертировать данные из столбца таблицы SQL Server, который устанавливается как varBinary (max) в строку для отображения это в ярлыке.

Это С#, и я использую DataReader.

Я могу извлечь данные при использовании:

var BinaryString = reader[1];

Я знаю, что этот столбец содержит текст, который ранее преобразовывался в двоичный файл.

Ответы

Ответ 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

Ответ 2

Двоичные данные должны быть закодированным текстом - и вам нужно знать, какая кодировка использовалась для точного преобразования его в текст. Например, вы можете использовать:

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

или

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

или различные другие параметры... но вам нужно знать правильную кодировку. В противном случае это похоже на попытку загрузить файл JPEG в средство просмотра изображений, которое только читает PNG... но хуже, потому что, если вы ошиблись в кодировке, оно может работать для некоторых строк.

Следующее, что нужно решить, - это то, почему оно хранится как двоичное в первую очередь... если оно предназначено для текста, то почему он не хранится таким образом.

Ответ 3

Вам нужно знать, какая кодировка использовалась для создания двоичного файла. Затем вы можете использовать

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

И измените UTF8 для любой кодировки.