Преобразование расширенных значений ASCII/ANSI
-
27-10-2019 - |
Вопрос
У меня есть программа, которая вводит текст и сортирует ее, используя ряд функций, и текст должен быть читаемым независимо от формата, однако, когда файл, сохраненный для расширенного кодирования 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);
Решение
Я вижу, что значения верны: 0xbf для û
Это не кодирование UTF-8 для û, это будет последовательность двух байтов, 0xc3 + 0xbb. Очевидно, вы догадались, что файл кодирует неправильно. Кодирование этого символа в коде Windows Code Page 1252, распространенный в Западной Европе и Америке, составляет 0xFB. Обычно в Великобритании, вашей стране проживания. Вы изменили цифры?
Вместо этого используйте encoding.default.