Hay alguna forma de determinar una matriz de bytes de la codificación en C#?

Tengo cualquier cadena de texto, como «Lorem ipsum áéíóú ñÑç», y me bytes de la matriz utilizando varias codificaciones.

Me gustaría que un solo método para detectar la codificación de matriz de bytes y me sale la cadena de valor de nuevo.

Otro problema, tal vez, voy a tener una columna en la base de datos, almacén de BLOBS (como matriz de bytes).
Una cadena convertido previamente a la matriz de bytes en el formato UTF-8. Tal vez otra aplicación que convierte una cadena a la matriz de bytes con la codificación Unicode.

En una columna de base de datos existen matrices de bytes en varias codificaciones. Sería muy útil detectar byte de la matriz de codificación. Necesito una manera de encontrar la codificación de matriz de bytes.

Pruebas:

string DataXmlForSupport = "<support><machinename></machinename><comments>Este es el log 1 áéíóú</comments></support>";
        string DataXmlForSupport2 = "Lorem ipsum áéíóú ñÑç";

        [TestMethod]
        public void Encoding_byte_array_string()
        {
            var uencoding = new System.Text.UnicodeEncoding();
            byte[] data = uencoding.GetBytes(DataXmlForSupport);

            var dataXml = Encoding.Unicode.GetString(data);
            Assert.AreEqual(DataXmlForSupport, dataXml, "Se esperaba resultados Unicode");

            dataXml = Encoding.UTF8.GetString(data);
            Assert.AreNotEqual(DataXmlForSupport, dataXml, "NO Se esperaba resultados UTF8");

            var utf8 = new System.Text.UTF8Encoding();
            data = utf8.GetBytes(DataXmlForSupport2);

            dataXml = Encoding.UTF8.GetString(data);
            Assert.AreEqual(DataXmlForSupport2, dataXml, "Se esperaba resultados UTF8");

            dataXml = Encoding.Unicode.GetString(data);
            Assert.AreNotEqual(DataXmlForSupport2, dataXml, "NO Se esperaba resultados Unicode");

        }
Usted debe fijar su base de datos sólo tienen una codificación, o almacenar el nombre de codificación en una columna separada. No es posible detectar de forma fiable las codificaciones.
Normalmente, es su trabajo para asociar la codificación de los datos. Por ejemplo, en la mayoría de los XML/HTML archivos de una de las primeras cosas que usted verá es un atributo que describe la codificación. Si la codificación no es suministrado, a continuación, basado en la especificación no es generalmente una codificación predeterminada que se presume.
posibles duplicados de Cómo detectar la codificación de caracteres de un archivo de texto?
archivo de texto no es lo mismo una cadena, cualquier fews diferencias, creo. De todos modos, tal vez compartir conocimientos ambas preguntas.

OriginalEl autor Kiquenet | 2013-10-22

1 Comentario

  1. 2

    En definitiva, no. Por favor, consulte Cómo detectar la codificación de caracteres de un archivo de texto? para una respuesta detallada sobre las diversas codificaciones y por qué no pueden ser determinados de forma automática.

    La mejor solución es convertir la cadena de la que es original codificación UTF8 y convertir en una matriz de bytes. Entonces usted sabrá que su byte de la matriz de codificación…

    Si puedo convertir de string a la codificación UTF8, el byte de la matriz de codificación es UTF-8. De todos modos, qué mejor manera de forma segura para convertir la cadena a UTF8?

    OriginalEl autor David Arno

Dejar respuesta

Please enter your comment!
Please enter your name here