Как преобразовать нечитаемую строку обратно в байты UTF-8 в c # - PullRequest
1 голос
/ 14 января 2009

у меня строка выглядит прицел аэропорта├⌐

Я знаю, что это французский, и я хочу преобразовать эту строку обратно в читаемый формат. Есть предложения?

Ответы [ 3 ]

6 голосов
/ 14 января 2009

Это не французский, французское слово "airport" - "aéroport".

Если вы хотите преобразовать строку в читаемый формат, вы должны знать, в какой кодировке была исходная строка, а не на каком языке. "aeroport aim├⌐" - это допустимая строка UTF8.

Где вы видите эту строку? В командной строке Windows? Это показывает забавные символы, такие как «├⌐» для символов с высоким ASCII. Командная строка использует CP437, а не UTF8, если у вас есть строка UTF8 «aimé», она будет отображаться как «aim in» в CP437.

Если это ваша ситуация, попробуйте записать строку в файл и открыть файл в Блокноте. Если это выглядит правильно, ваша строка верна, приложение, отображающее ее, неверно.

1 голос
/ 14 октября 2010

Это помогло мне в похожем случае:

string ok_string = System.Text.Encoding.UTF8.GetString(
System.Text.Encoding.Default.GetBytes(bad_string));
0 голосов
/ 14 января 2009

Хех. Это простая задача криптоанализа. Вы должны собрать статистику использования букв в вашей строке. Это может быть одна буква, две или более древовидные группы. Чем вам нужно собрать одинаковую статистику по большому количеству текста одной и той же тематики. Затем вы должны упорядочить древовидные грамматики франка и ваш необычный текст по своему усмотрению и расшифровать свою криптограмму. Конечно, сначала это будет неправильно, но затем вы можете применить словарь, чтобы определить коэффициент отказов, и применить какой-то генетический алгоритм, чтобы найти лучший механизм.

И, кстати. Если изначально текст был UTF-8, но был «вынужден» быть однобайтовым текстом кодовой страницы, вы должны работать в байтах, а не в символах.

...