操作系统 Windows,C#。我的输出编码有问题。
App.Document doc = cad.DocumentManager.MdiActiveDocument;
if (doc != null)
doc.Editor.WriteMessage("\nProcess started. Please, wait...\n");
String exeName = Path.Combine(curDir, "recovery");
Process proc = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.CreateNoWindow = true;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
// info.StandardOutputEncoding = Encoding.GetEncoding(1251);
info.StandardOutputEncoding = Console.OutputEncoding;
info.FileName = exeName;
info.Arguments = String.Format("{0} -clear", @"%zipDir%\acad_R17.2.zip");
proc.StartInfo = info;
proc.Start();
String outputText = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
if (doc != null) {
doc.Editor.WriteMessage(outputText);
doc.Editor.WriteMessage(Environment.NewLine);
doc.Editor.WriteMessage("Operation is complete.");
doc.Editor.WriteMessage(Environment.NewLine);
}
输出结果:
恢复; (c) 安德烈·布什曼,2013
ЋЎа Ў®вЄ Є в «®Ј "%acad_R17.2%"。ќ«Ґ¬Ґв: AutoCAD 2009/; –Ґ«Ґў®© Є в «®Ј: C:\Program Files\Autodesk; ЋиЁЎЄ : ЋвЄ § ® ў ¤®бвгЇҐ Ї® ЇгвЁ "acad.CUI"。ЋЎа Ў®вЄ Є в «®Ј "%rmb_acad_R17.2%"。ЋЎа Ў®вЄ Є в «®Ј "%local_acad_R17.2%"。ЋЎа Ў®вЄ Є в «®Ј "%allUsers_acad_R17.2%"。ЋЎа Ў®вЄ Є в «®Ј "%shared_acad_R17.2%"。ќ«Ґ¬Ґв:欧特克共享/;–Ґ«Ґў®© Є в «®Ј: C:\Program Files\Common Files; ЋиЁЎЄ : ЋвЄ § ® ў ¤®бвгЇҐ Ї® ЇгвЁ "C:\Program Files\Common Files\Autodesk Shared\"。ЋЎа Ў®вЄ Є в «®Ј "%ext_acad_R17.2%"。
但是如果我通过 cmd.exe 启动 recovery.exe,在控制台中我会看到正确的文本。如何通过我的代码获取有效文本?
问候