从标准io编码中捕获输出?

时间:2013-08-06 13:10:32

标签: c# utf-8 character-encoding redirectstandardoutput

我正在将应用程序的输出传送到我的.NET应用程序中。

编码有点奇怪。 字母ÅÄÖ显示为├Ñ├ñ├

我试图从各种不同的编码中来回转换,但没有成功。 有人知道如何在这里正确转换字符串吗?

e.g。该应用程序的文档说输出是UTF8,所以我试过这个:

byte[] encodedBytes = Encoding.UTF8.GetBytes(theOutput);
var res = Encoding.Default.GetString(encodedBytes);

哪个不正确的结果。

编辑: 代码:

var processStartInfo = new ProcessStartInfo
{
   CreateNoWindow = true,
   RedirectStandardOutput = true,
   RedirectStandardInput = true,
   UseShellExecute = false,
   Arguments = a,
   FileName = path + "\\phantomjs.exe"
};

var process = new Process
{
   StartInfo = processStartInfo,
   EnableRaisingEvents = true
};

//capturing output here
process.OutputDataReceived += 
   (sender, args) => outputBuilder.Append(args.Data);

process.Start();
process.BeginOutputReadLine();
process.WaitForExit(20000);
process.CancelOutputRead();

1 个答案:

答案 0 :(得分:11)

找到解决方案。 你可以设置

   processStartInfo.StandardOutputEncoding = Encoding.UTF8;

这使它正确输出。