gpt4 book ai didi

c# - 在测试中捕获控制台应用程序输出时的编码问题

转载 作者:太空狗 更新时间:2023-10-29 21:35:40 28 4
gpt4 key购买 nike

我正在尝试通过在使用 System.Diagnostics.Process 的测试中运行它来捕获控制台应用程序的输出。我在字符编码方面遇到问题。 “£”在测试中显示为“–”,但当我运行控制台应用程序时,它正确显示为“£”。

如果我设置 Console.Out.Encoding = Encoding.Default,它在测试中有效,但在正常运行时无法正常显示。

这是怎么回事,我该如何解决?

最佳答案

您需要在测试用例的 ProcessStartInfo 对象上设置 StandardOutputEncoding:

var process = new Process();
var startInfo = new ProcessStartInfo(@"yourapp.exe");
startInfo.StandardOutputEncoding = Encoding.GetEncoding(850);

您可以通过运行找到您在控制台应用程序中使用的代码页

Console.WriteLine(Console.Out.Encoding.CodePage); 

返回 850(西欧 DOS)

您还可以使用 BodyName 属性作为 GetEncoding 的参数,即:

startInfo.StandardOutputEncoding = Encoding.GetEncoding("ibm850");

关于c# - 在测试中捕获控制台应用程序输出时的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041602/

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