Jon*_*yMC 6 c# encoding system.diagnostics console-application
我试图通过使用System.Diagnostics.Process在测试中运行它来捕获控制台应用程序的输出.我遇到字符编码问题."£"在测试中显示为"œ",但是当我运行控制台应用程序时,它正确显示为"£".
如果我设置Console.Out.Encoding = Encoding.Default,它在测试中有效,但在正常运行时无法正常显示.
这里发生了什么,我该如何解决?
你需要设置StandardOutputEncoding你的ProcessStartInfo目标在你的测试用例:
var process = new Process();
var startInfo = new ProcessStartInfo(@"yourapp.exe");
startInfo.StandardOutputEncoding = Encoding.GetEncoding(850);
Run Code Online (Sandbox Code Playgroud)
您可以通过运行在控制台应用中找到您正在使用的CodePage
Console.WriteLine(Console.Out.Encoding.CodePage);
Run Code Online (Sandbox Code Playgroud)
返回850(西欧DOS)
您还可以将该BodyName属性用作arg,GetEncoding即:
startInfo.StandardOutputEncoding = Encoding.GetEncoding("ibm850");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2388 次 |
| 最近记录: |