有没有办法在C#中确定字节数组的编码方式?
我有一个字符串,比如"Lorem ipsum áéíóú ñÑç",我用几种编码方式获取字节数组。
我想要一个识别字节数组编码的方法,以便重新获取字符串值。
另一个问题是,也许我会在数据库中有一个存储BLOB(如字节数组)的列。一个字符串之前被转换为UTF-8字节数组。或许另一个应用程序使用Unicode编码将字符串转换为字节数组。
在数据库列中有多种编码的字节数组,找到字节数组的编码方式非常有用。我需要一种方法来确定字节数组的编码方式。
测试:
我有一个字符串,比如"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");
}