Преобразование текстового файла от ANSI до ASCII с помощью C#

Используйте "\n", чтобы добавить дополнительную строку в дополнение к уже добавленной строке.

19
задан Zero Piraeus 22 February 2015 в 14:38
поделиться

2 ответа

Прямое преобразование из 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, но это не имеет смысла, поскольку:

  • если исходная строка не ' t не содержит байтов> 126, то это уже ASCII
  • , если исходная строка содержит один или несколько байтов> 126, то эти байты будут потеряны

ОБНОВЛЕНИЕ:

В ответ на обновленный вопрос вы можете используйте BinaryReader следующим образом:

BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
                                       Encoding.GetEncoding(1252));
30
ответ дан 30 November 2019 в 02:29
поделиться

Обычно при чтении / записи файла необходимо указать кодировку . Например:

// read with the **local** system default ANSI page
string text = File.ReadAllText(path, Encoding.Default); 

// ** I'm not sure you need to do this next bit - it sounds like
//  you just want to read it? **

// write as ASCII (if you want to do this)
File.WriteAllText(path2, text, Encoding.ASCII);

Обратите внимание, что после прочтения текста текст фактически является юникодом в памяти.

Вы можете выбрать разные кодовые страницы, используя Encoding.GetEncoding .

23
ответ дан 30 November 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: