gpt4 book ai didi

C# WinForms 进程编码问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:50 25 4
gpt4 key购买 nike

我正在用 C# 编写 Windows 窗体应用程序我有一个运行 cmd 命令并返回其输出的进程对象。

Process Pro = new Process();
Pro.StartInfo.FileName = "cmd.exe";
Pro.StartInfo.Arguments = "<Dos Command here>";
Pro.StartInfo.CreateNoWindow = true;
Pro.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Pro.StartInfo.RedirectStandardOutput = true;
Pro.StartInfo.UseShellExecute = false;
Pro.Start();

效果不错!但是,如果命令的输出不是 ASCII(在我的例子中是希腊语),则输出是随机符号。肯定是编码问题。如果我在控制台应用程序上运行相同的代码,一切都会顺利进行。

我尝试将基本流读取为 UTF-8,但没有成功!

System.IO.StreamReader Rdr = new System.IO.StreamReader(Pro.StandardOutput.BaseStream, Encoding.UTF8);

有什么方法可以在 winform 应用程序中正确读取输出?谢谢!

最佳答案

真正的解决方案是基于此: unicode-characters-in-windows-command-line-how在这里检查: Wiki code page对于您需要的代码页。

你也可以做一个丑陋的黑客,将命令写入批处理文件(f.e foo.bat)然后将其作为 foo.bat > log.txt 运行然后你可以从 log.txt 中读取输出。

关于C# WinForms 进程编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com