如何在c#中将不可读的字符串转换回UTF-8字节

时间:2009-01-14 01:19:59

标签: c# string utf-8

我有一个字符串看起来像 机场目标├⌐

我知道它是法语,我想将此字符串转换回可读格式。 有什么建议吗?

3 个答案:

答案 0 :(得分:6)

这不是法语,法语中的“机场”是“aéroport”。

如果要将字符串转换为可读格式,则必须知道原始字符串的编码,而不是语言。 “aeroportaim├⌐”是合法的UTF8字符串。

你在哪里看到这个字符串?在Windows命令提示符下?对于高ASCII字符,它显示有趣的字符,如“├⌐”。命令提示符使用CP437,而不是UTF8,如果您有UTF8字符串“aimé”,它将在CP437中显示为“aim├⌐”。

如果是这种情况,请尝试将字符串写入文件并在记事本中打开该文件。如果看起来正确你的字符串是正确的,显示它的应用程序是错误的。

答案 1 :(得分:1)

这在一个类似的案例中帮助了我:

string ok_string = System.Text.Encoding.UTF8.GetString(
System.Text.Encoding.Default.GetBytes(bad_string));

答案 2 :(得分:-1)

嘿。这是简单的密码分析任务。您应该收集字符串中字母用法的统计信息。它可以是单个字母,两个或更好的树字母组。比你应该收集相同主题的大量文本相同的统计数据。然后你应该按照用法安排Franch的树语法和你的花哨文本并解码你的密码。当然一开始就错了,但是你可以运用字典来确定失败率并应用某种遗传算法来找到最佳马赫。

顺便说一下。如果最初的文本是UTF-8,但被“强制”为一个字节的代码页文本,则应该以字节为单位操作 - 而不是符号。