Я запускаю консольное приложение (myApp.exe), которое выводит псевдо локализованную (Unicode) строку в стандартный вывод.
Если я запускаю это в обычной командной строке (cmd.exe), данные Unicode теряются.
Если я запускаю это в командной строке Unicode (cmd.exe / u) или задаю в свойствах консоли значение «Lucida Console», строка Unicode сохраняется.
Я бы хотел запустить это приложение на C # и перенаправить строку юникода в локальную переменную. Я использую объект Process с RedirectStandardOutput = true, но строка Юникода всегда теряется.
Как я могу указать, чтобы сохранить эту информацию Unicode?
private static int RunDISM(string Args, out string ConsoleOutput)
{
Process process = new Process();
process.StartInfo.FileName = "myApp.exe";
process.StartInfo.Arguments = Args;
try
{
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
process.Start();
process.WaitForExit(Int32.MaxValue);
}
catch (Exception e)
{
WEX.Logging.Interop.Log.Assert("Failure while starting or running process.\nERROR: " + e.Message);
ConsoleOutput = null;
return EXITCODE_ERROR;
}
ConsoleOutput = process.StandardOutput.ReadToEnd();
return process.ExitCode;
}