c# - 检测字节数组C#的编码

标签 c# arrays encoding utf-8 detect

在 C# 中有什么方法可以确定字节数组的编码?

我有任何字符串,例如 "Lorem ipsum áéíóú ñÑç",我使用多种编码获得字节数组。

我想要一个唯一的方法来检测字节数组中的编码,然后我再次获得字符串值。

其他问题,也许,我将在数据库中有一列存储 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");

        }

最佳答案

简而言之,没有。请看How to detect the character encoding of a text file?获取有关各种编码的详细答案以及无法自动确定它们的原因。

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

关于c# - 检测字节数组C#的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519685/

相关文章:

c++ - 如何将 malloc 返回的指针视为多维数组?

Java Encode file to Base64 string 以匹配其他编码的字符串

mysql - 从 MSSQL 迁移到 MySQL 的字符编码问题

ios - 如何为 Alamofire POST 请求正文设置 UTF8 编码?

c# - 只读给定 txt 文件中的最后 x 行

java - 将加速度计数据插入数组

java - java中最大和第二大的数从整数数组中获得相同的值?

java - 从 Java 应用程序调用 C# 库 : Process is terminated due to StackOverflowException

c# - ASP.NET 插入语句与外键约束冲突

c# - 无法加载非常大的 JSON(92,000 行)