我从我的c#应用程序启动cmd.exe并重定向其输入流。这对于像“abc”这样的正常字符工作正常但是当我尝试重定向控制台窗口中的“äöüßáàâ”字符时出现“õ÷³óô”。
Process myProcess = new Process();
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.Arguments = "/K";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.WorkingDirectory = @"c:\";
myProcess.Start();
StreamWriter myStreamWriter = myProcess.StandardInput;
myStreamWriter.WriteLine("äöüßáàâ");
myStreamWriter.Encoding说它的编码是代码页1252我试图将我的字符串转换成它但它没有改变结果。 如何转换我显示正确的字符串?
答案 0 :(得分:0)
我拿了代码并运行了相同的..当我没有重定向输出时,我看到了与OP相同的内容。然而
Process myProcess = new Process();
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.Arguments = "/K";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
//myProcess.StartInfo.StandardOutputEncoding = Encoding.UTF32;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.WorkingDirectory = @"c:\";
myProcess.Start();
StreamWriter myStreamWriter = myProcess.StandardInput;
StreamReader myStreamReader = myProcess.StandardOutput;
myStreamWriter.WriteLine("äöüßáàâ");
richTextBox1.Text = myStreamReader.ReadToEnd();
这会在文本框中按预期生成c:\>äöüßáàâ
..即使它似乎没有在显示的控制台窗口中显示它。