Прямое преобразование из ANSI в ASCII не всегда возможно, поскольку ANSI является расширенным набором ASCII.
Вы можете попробовать конвертировать в UTF-8, используя Encoding
, но:
Encoding ANSI = Encoding.GetEncoding(1252);
byte[] ansiBytes = ANSI.GetBytes(str);
byte[] utf8Bytes = Encoding.Convert(ANSI, Encoding.UTF8, ansiBytes);
String utf8String = Encoding.UTF8.GetString(utf8Bytes);
Конечно, вы можете заменить UTF8 на ASCII, но это не имеет смысла, так как:
- если исходная строка не содержит байтов> 126, то это уже ASCII
- если исходная строка содержит один или несколько байтов> 126, то эти байты будут потеряны
UPDATE:
В ответ на обновленный вопрос вы можете использовать BinaryReader
следующим образом:
BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
Encoding.GetEncoding(1252));