Преобразование двоичных данных 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 для любой кодировки.