Проблемы с кодировкой.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);
Другие вопросы по тегам