実現したいこと
フリーソフト「Everything」のコマンドライン用ツールes.exeをc#上で実行し、その結果を標準出力に文字化けさせずに出しstringとして取得したい。
発生している問題・分からないこと
Processを使用することでes.exeを実行し標準出力に出すことはできるが、結果にSHIT_JIS以外の文字が混じっていると「?」に変換されてしまい正しく結果を受け取れない。
・es.exeの結果なので対象はフォルダ、ファイル名
・例)「あいうえお❤」が「あいうえお?」になってしまう
・標準出力ではなくファイルに出力する場合は文字化けしない
該当のソースコード
c#
1string searchtext="あいうえお"; 2System.Diagnostics.Process p = new System.Diagnostics.Process(); 3p.StartInfo.FileName = "es.exe"; 4p.StartInfo.UseShellExecute = false; 5p.StartInfo.CreateNoWindow = true; 6p.StartInfo.RedirectStandardOutput = true; 7p.StartInfo.Arguments = $"{searchtext}"; 8p.Start(); 9do 10{ 11 yield return p.StandardOutput.ReadLine(); 12} while (!p.StandardOutput.EndOfStream);
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・es.exeのオプションを調べても標準出力部分で文字コード指定できそうなものは見つからなかった(ファイル出力指定時なら可能)
・p.StartInfo.StandardOutputEncodingにUTF8などSHIFT_JIS以外を指定したら全部文字化けしてしまう
・cmdでコマンドプロンプトを起動してコマンドプロンプト上でes.exeを実行した場合は文字化けせずに結果が表示される(Processでの結果と異なるのは使用されるコマンドプロンプトが異なるため?)
補足
開発環境
・VisualStudio Community 2019
・.Net Framework4.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/26 11:54