外部コマンドを実行するには 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(); // 標準出力を得る
:
}
ありがとうございました
返信削除同じ悩みがありましたが解決できました