Сломанная кодировка 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)