检测字节数组C#的编码

Kiq*_*net 7 c# arrays encoding utf-8 detect

有没有办法在C#中确定字节数组的编码?

我有任何字符串,如 "LoremipsumáéíóúñÑç",我使用几种编码得到字节数组.

我想在字节数组中检测编码的唯一方法,我再次得到字符串值.

其他问题,也许,我会在数据库中有一个存储BLOB的列(如字节数组).以前转换为UTF-8字节数组的字符串.也许另一个应用程序使用Unicode编码将字符串转换为字节数组.

在数据库列中,有几个编码的字节数组.检测字节数组的编码非常有用.我需要一种方法来查找字节数组的编码.

测试:

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");

        }
Run Code Online (Sandbox Code Playgroud)

Dav*_*rno 4

简而言之,不。请参阅如何检测文本文件的字符编码?有关各种编码以及为什么不能自动确定它们的详细答案。

最好的解决方案是将字符串从原始编码转换为 UTF8,然后将其转换为字节数组。然后你就会知道你的字节数组的编码......