Ваш код работает нормально , если файл, который вы читаете, уже закодирован в UTF-8, но он не будет работать, если он использует другую кодировку.Я бы порекомендовал загрузить файл в текстовый редактор, такой как Notepad ++, который сообщает вам, какова кодировка файла (в строке состояния).Если он не закодирован в UTF-8 для начала, чтение и запись как UTF-8 не будут работать.
Если вы хотите попробовать прочитать файл в кодировке системы по умолчанию, вы можете использовать Encoding.Default
вместо UTF8.Затем вы должны записать в новый файл при записи файла, потому что вы не можете написать несколько кодировок в один и тот же файл.Кодировка по умолчанию, вероятно, будет правильной кодировкой, если UTF-8 - нет.
string filePath = @"C:\users\yourname\desktop\TestFile.txt";
string[] lines = File.ReadAllLines(filePath, Encoding.Default);
string outFile = @"C:\users\yourname\desktop\outfile.txt";
Stream s = new FileStream(outFile, FileMode.Append);
StreamWriter sw = new StreamWriter(s, Encoding.UTF8, 1000, true);
foreach (var line in lines)
sw.WriteLine(line);
sw.Close();
В качестве альтернативы, если вам нужно добавить в тот же файл, используйте ту же кодировку, которую вы использовали для чтения файла,или перепишите весь файл.Если исходный файл выглядит нормально в блокноте, кодировка системы по умолчанию, вероятно, будет правильной кодировкой.Если вы хотите оставить файл в текущей кодировке системы, используйте Encoding.Default
.Если вы хотите изменить кодировку всего файла на UTF-8, я думаю, вам придется переписать весь файл вместо добавления.
Если Notepad ++ показывает это в строке состояния, то вы можете 't читать файл как UTF-8
Вы можете использовать UTF-8, только если Notepad ++ показывает что-то подобное в строке состояния:
Вы можете использовать команду «Преобразовать в UTF-8» меню «Кодировка» в Notepad ++, чтобы сделать файл совместимым с вашим приложением.
Предупреждение : Не путайте команду «Кодировать в UTF-8» с командой «Преобразовать в UTF-8».Если файл выглядит правильно, вы хотите использовать «Преобразовать в UTF-8».Если вы используете «Кодирование в UTF-8», которое будет интерпретировать существующие данные как новую кодировку вместо изменения содержимого для использования новой кодировки.
Редактировать : Изменить Encoding.GetEncoding(0)
до Encoding.Default
.