Сломанная кодировка StandardOutput.ReadLine C#

я хочу исполнить bat скрипт с перехватом вывода консоли, используя этот код

`

            Process proc = new Process();
            proc.StartInfo.FileName = @"path\to\.bat";
            proc.StartInfo.WorkingDirectory = @"path\to'dir";
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.CreateNoWindow = true;
            proc.Start();

            string ConOut = "";

            do
            {
                ConOut = proc.StandardOutput.ReadLine();
                if (ConOut != null)
                {
                    Console.WriteLine(ConOut);
                }

            } while (ConOut != null);

`

на выходе получается кирилица, но если я использую тот же самый код внутри WPF приложения, то proc.StandardOutput.ReadLine(); выдает ЌҐў®§¬®¦­®, в обоих случаях код запускается из другого потока


Ответы (1 шт):

Автор решения: CrazyElf

Видимо, это потому, что у консоли кодировка cp866, а у виндовых программ cp1251. Где-то нужно указывать кодировку. Попробуйте так:

proc.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866)
→ Ссылка