Как изменить кодировку текстовых файлов с помощью кода? Я использую этот код для фактического создания самого файла, но как я могу изменить кодировку (сменить кодировку на UTF-8 без спецификации)

string path = @"E:\Test\Example.txt";
if (!File.Exists(path))
{
    File.Create(path);
}
2
MasterOfStupidQuestions 7 Янв 2014 в 17:34

2 ответа

Лучший ответ

Вы могли бы сделать что-то подобное, но я не уверен, что это действительно имеет смысл, так как кажется, что у вас нет содержимого в вашем файле ...

Если у вас есть контент, замените string.Empty содержанием

File.WriteAllText(path, string.Empty, Encoding.GetEncoding(<someEncodingCode>));

Редактировать :

File.WriteAllText(path, string.Empty, new UTF8Encoding(false));
6
Raphaël Althaus 7 Янв 2014 в 13:47

Во-первых, за исключением нескольких баз (например, спецификации Unicode, правил кодирования XML) вам понадобится какая-то форма метаданных, чтобы сообщить вам текущую кодировку. Некоторые инструменты предполагают, что они ненадежны (например, различные латинские кодировки в ISO / IEC 8859-1 их не отличить).

Узнав кодировку ввода, передайте экземпляр Encoding, созданный с именем кодировки, в StreamReader конструктор, создайте экземпляр StreamWriter с желаемой выходной кодировкой, а затем перекачивать строки из одной в другую .

(Если вы знаете, что файлы не слишком большие: прочтите все сразу с помощью File.ReadAllTetxt и напишите с помощью File.WriteAllText, которые принимают параметры Encoding.

1
Richard 2 Янв 2019 в 08:48