tipos - Convertir datos varBinary de SQL Server en la cadena C#
tinyint c# equivalent (3)
Los datos binarios deben ser texto codificado, y usted necesita saber qué codificación se utilizó para convertirlos de nuevo en texto de manera precisa. Entonces, por ejemplo, podrías usar:
byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
o
byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);
o varias otras opciones ... pero necesita conocer la codificación correcta . De lo contrario, es como tratar de cargar un archivo JPEG en un visor de imágenes que solo lee PNG ... pero peor, porque si obtienes la codificación incorrecta, puede que funcione para algunas cadenas.
La siguiente cosa a resolver es por qué se almacena como binario en primer lugar ... si está destinado a ser texto, ¿por qué no se almacena de esa manera?
Necesito ayuda para averiguar cómo convertir los datos que provienen de una columna de la tabla de SQL Server que se establece como varBinary (max) en una cadena para mostrarla en una etiqueta.
Esto está en C # y estoy usando un DataReader .
Puedo tirar los datos usando:
var BinaryString = reader[1];
Sé que esta columna contiene texto que previamente se convirtió a binario.
Necesita saber qué codificación se utilizó para crear el binario. Entonces puedes usar
System.Text.Encoding.UTF8.GetString(reader[1]);
Y cambia UTF8 por cualquier codificación que se haya usado.
Realmente depende de qué codificación se usó cuando se convirtió originalmente de cadena a binario:
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