gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:33:53 27 4
gpt4 key购买 nike

在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com