字符串类型转换C#
本文关键字:类型转换 字符串 | 更新日期: 2023-09-27 18:29:12
这是我的问题:我有一个字符串,我认为它是二进制的:
zv�Q6��.�����E3r
我想把这个字符串转换成可以阅读的东西。我如何在C#中做到这一点?
您可以尝试枚举(测试)所有可用的编码,并找出其中一个它对合理的文本进行编码。不幸的是,当它不是一个绝对的解决方案时:这可能是错误转换造成的信息损失。
public static String GetAllEncodings(String value) {
List<Encoding> encodings = new List<Encoding>();
// Ordinary code pages
foreach (EncodingInfo info in Encoding.GetEncodings())
encodings.Add(Encoding.GetEncoding(info.CodePage));
// Special encodings, that could have no code page
foreach (PropertyInfo pi in typeof(Encoding).GetProperties(BindingFlags.Static | BindingFlags.Public))
if (pi.CanRead && pi.PropertyType == typeof(Encoding))
encodings.Add(pi.GetValue(null) as Encoding);
foreach (Encoding encoding in encodings) {
Byte[] data = Encoding.UTF8.GetBytes(value);
String test = encoding.GetString(data).Replace(''0', '?');
if (Sb.Length > 0)
Sb.AppendLine();
Sb.Append(encoding.WebName);
Sb.Append(" (code page = ");
Sb.Append(encoding.CodePage);
Sb.Append(")");
Sb.Append(" -> ");
Sb.Append(test);
}
return Sb.ToString();
}
...
// Test / usage
String St = "Некий русский текст"; // <- Some Russian Text
Byte[] d = Encoding.UTF32.GetBytes(St); // <- Was encoded as UTF 32
St = Encoding.UTF8.GetString(d); // <- And erroneously read as UTF 8
// Let's see all the encodings:
myTextBox.Text = GetAllEncodings(St);
// In the myTextBox.Text you can find the solution:
// ....
// utf-32 (code page = 12000) -> Некий русский текст
// ....
byte[] hexbytes = System.Text.Encoding.Unicode.GetBytes();
这为您提供了字符串的十六进制字节,但您必须知道字符串的编码,并用它替换"Unicode"。