Сохранить специальные символы при записи всех строк в текстовый файл
У меня есть несколько строк, которые содержат специальные символы, такие как эти строки:
CommunautéFinancièreAfricaineBEACFranc (XAF) CommunautéFinancièreAfricaineBCEAOFranc (XOF)
Но когда я записываю эти строки в текстовый файл, я получаю в результате:
CFACommunaut Financi reAfricaineBEACFranc CFACommunaut Financi reAfricaineBCEAOFranc
Вот как я пишу строки:
File.WriteAllLines(@"c:\file5.txt", lines);
Я также попробовал 3-й параметр File.WriteAllLines()
передавая Encoding
, Но это тоже не помогло.
File.WriteAllLines(@"c:\file5.txt", lines, Encoding.UTF8);
File.WriteAllLines(@"c:\file5.txt", lines, Encoding.ASCII);
Вот как я читаю все строки:
File.ReadAllLines(@"C:\file4.txt").ToList()
.ForEach(g =>
lines.Add(g.ToString()
.Replace("/", string.Empty)
.Replace("(", string.Empty)
.Replace(")", string.Empty))
);
Сумасшедшая вещь в том, что символы отлично отображаются в другом текстовом файле (file4.txt), где я все читаю.
1 ответ
Блокнот не распознает UTF-8, если вы не добавите спецификацию.
У вас есть три варианта:
- Решите, что блокнот тупой и проигнорируйте проблему. Лучшие редакторы распознают UTF-8.
- Добавить спецификацию использование
var utf8WithBom = new Utf8Encoding(true, true)
в качестве второго аргумента. Используйте устаревшую кодировку. Уточнить
Encoding.Default
в качестве второго аргумента.Полученный файл будет повреждать символы, отсутствующие в текущей кодовой странице. Он не будет правильно отображаться в системах, используемых в некоторых других странах.
ИМО, это плохая идея, но я все еще упоминаю ее для полноты.