Преобразование расширенных значений ASCII/ANSI

StackOverflow https://stackoverflow.com/questions/8368578

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top