CustomScript

ページ

2015年11月4日水曜日

[C#] Processの標準出力が文字化けする時の対処

  • C#
  • .Net 4.5
外部コマンドを実行するには System.Diagnostics.Process を使うのですが、その標準出力を StandardOutput.ReadToEnd() でリダイレクトすると文字化けしてしまう時があります。そんな時は StartInfo.StandardOutputEncoding に標準出力の文字コードを設定します。
// サンプル
using (var process = new System.Diagnostics.Process())
{
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;

    process.StartInfo.RedirectStandardOutput = true; // 標準出力リダイレクトON
    process.StartInfo.StandardOutputEncoding = Encoding.UTF8; // エンコーディング設定

    process.StartInfo.FileName = ... ;
    process.StartInfo.Arguments = ... ;

    process.Start();

    process.WaitForExit();

    string text = process.StandardOutput.ReadToEnd(); // 標準出力を得る
    :
}

1 件のコメント:

  1. ありがとうございました
    同じ悩みがありましたが解決できました

    返信削除