C # WinForms Process Encoding проблема - PullRequest
       12

C # WinForms Process Encoding проблема

2 голосов
/ 28 сентября 2011

Я пишу приложение Windows Forms на C # У меня есть объект процесса, который запускает команду cmd и возвращает ее вывод.

Process Pro = new Process();
Pro.StartInfo.FileName = "cmd.exe";
Pro.StartInfo.Arguments = "<Dos Command here>";
Pro.StartInfo.CreateNoWindow = true;
Pro.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Pro.StartInfo.RedirectStandardOutput = true;
Pro.StartInfo.UseShellExecute = false;
Pro.Start();

Что отлично работает! Однако, если выходные данные команды не ASCII (в моем случае греческий), выходные данные являются случайными символами. Конечно, проблема с кодировкой. Если я запускаю тот же код в консольном приложении, все работает гладко.

Я попытался прочитать Базовый поток как UTF-8, но не повезло!

System.IO.StreamReader Rdr = new System.IO.StreamReader(Pro.StandardOutput.BaseStream, Encoding.UTF8);

Есть ли способ правильно прочитать вывод в приложении winform? Thnx!

1 Ответ

0 голосов
/ 04 октября 2011

Реальное решение основано на этом: юникод-символы в-окна-командная строка, как проверьте здесь: Кодовая страница Wiki для кодовой страницы вам нужно.

вы также можете сделать некрасивый хак, записав команду в командный файл (например, foo.bat) затем запустить его как foo.bat > log.txt тогда вы можете прочитать вывод из log.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...