преобразование расширенных значений ASCII / ANSI - PullRequest
1 голос
/ 03 декабря 2011

У меня есть программа, которая вводит текст и сортирует его, используя ряд функций, и текст должен быть читаемым независимо от формата, однако, когда импортируется файл, сохраненный в расширенной кодировке ASCII, любые символы свыше 127 игнорируются,Оглядываясь вокруг, я не вижу, как это преодолеть.Файлы хорошо читаются в UTF-8 и Unicode.Я пытался преобразовать строки в UTF-8, но рассматриваемые буквы по-прежнему просто представляют собой вопросительные знаки, похожие на фигуры.Я вижу, что значения верны: 0xBF для û, но они не интерпретируются как значения.

Может ли кто-нибудь помочь мне здесь, я не проделал много работы с такого рода вещами раньше.Я работаю в C #, если это поможет.

Мой текущий код для преобразования выглядит следующим образом:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);

Где sd - строка.Когда я импортирую эту строку, я не указываю кодировку текста:

string input = File.ReadAllText(fname);
...
parser(input);

1 Ответ

2 голосов
/ 03 декабря 2011

Я вижу, что значения верны: 0xBF для û

Это не кодировка utf-8 для û, это будет двухбайтовая последовательность 0xC3 + 0xBB. Очевидно, вы угадали кодировку файла неправильно. Кодировка этого символа в кодовой странице Windows 1252, распространенной в Западной Европе и Америке, составляет 0xFB. Распространен также в Великобритании, вашей стране проживания. Вы поменяли цифры?

Вместо этого используйте Encoding.Default.

...