में छद्म-लोक (यूनिकोड) तारों को रीडायरेक्ट करना मैं एक कंसोल ऐप (myApp.exe) चला रहा हूं जो मानक आउटपुट में छद्म स्थानीयकृत (यूनिकोड) स्ट्रिंग आउटपुट करता है। यदि मैं इसे नियमित कमांड प्रॉम्प्ट (cmd.exe) में चलाता हूं, तो यूनिकोड डेटा खो जाता है। यदि मैं इसे यूनिकोड कमांड प्रॉम्प्ट (cmd.exe/u) में चलाता हूं या कंसोल के गुणों को "लुसीडा कंसोल" पर सेट करता हूं तो यूनिकोड स्ट्रिंग को बनाए रखा जाता है।कंसोल आउटपुट को पुनर्निर्देशित करना सी #
मैं इस ऐप को सी # में चलाने के लिए और यूनिकोड स्ट्रिंग को स्थानीय चर में रीडायरेक्ट करना चाहता हूं। मैं RedirectStandardOutput = true के साथ एक प्रक्रिया ऑब्जेक्ट का उपयोग कर रहा हूं, लेकिन यूनिकोड स्ट्रिंग हमेशा खो जाती है।
मैं इस यूनिकोड जानकारी को जारी रखने के लिए कैसे निर्दिष्ट कर सकता हूं?
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;
}
क्या आप हमें myApp.exe से बाहर निकलने की कोशिश कर रहे यूनिकोड सामग्री पर अधिक जानकारी प्रदान कर सकते हैं, विशेष रूप से नमूना स्ट्रिंग जो ठीक से नहीं आ रहा है? इससे हमें एक समाधान समाधान में मदद मिल सकती है। – Charlie
एक और नोट पर: आपको WaitToExit() से पहले ReadToEnd() को कॉल करना चाहिए। देखें: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx – Ben