什么是正确的c#输入流的cmd.exe编码

本文关键字:cmd exe 编码 输入流 什么 | 更新日期: 2023-09-27 18:07:14

我正在从我的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。编码说它的编码是代码页1252我试图转换我的字符串,但它没有改变结果。如何转换我的字符串,它显示正确?

什么是正确的c#输入流的cmd.exe编码

我把代码和运行相同的。当我没有重定向输出时,我看到的与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:'>äöüßáàâ。尽管在控制台窗口中没有正确显示