Проблемы с кодировкой.net core 2
Этот код работает как положено в .net framework
но не в .net core 2
Файл в.txt содержит "Дюссельдорф"
в.net framework вывод "Дюссельдорф"
в ядре.net вывод "Дюссельдорф"
(Я уже испробовал все другие Кодировки из отчаяния... никто не работает)
string infile = @"C:\in.txt", outFile = @"C:\out.txt";
var inStr = new StreamReader(infile, Encoding.Default);
var outStr = new StreamWriter(outFile, false, Encoding.Default);
while (!inStr.EndOfStream)
{
outStr.WriteLine(inStr.ReadLine());
}
outStr.Flush();
inStr.Dispose();
outStr.Dispose();
Любые идеи, почему это не работает?
1 ответ
Согласно официальной странице MSDN кодировка по умолчанию не является фиксированной - это зависит от настроек ОС. Если вы знаете, какая кодировка есть в файле, укажите это!
РЕДАКТИРОВАТЬ: Затем попробуйте распечатать детали кодирования (например, имя) из.net Framework, который работает. Затем укажите то же самое в.net core 2. Не полагайтесь на стандартное. Эта страница MSDN, Список кодировок в образце кода, содержит список поддерживаемых кодировок.
ОБНОВЛЕНИЕ gsharp: я должен был сослаться на пакет NuGet System.Text.Encoding.CodePages
зарегистрируйте их и используйте
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);
var inStr = new StreamReader(infile, enc1252);
var outStr = new StreamWriter(outFile, false, enc1252);