質問: タイトルの通りですが、 ○C#にてprocess.startのargumentsへの日本語を含む文字列の指定方法 および ○コマンドプロンプトにてアプリケーション実行の引数に日本語を含む文字列の指定方法 が分かりません。 現状、実行したアプリケーションが受け取るのは文字化けした文字列になっています。 実行したいのはTeighaFileConverterです。 このアプリケーションは引数として、入力ディレクトリ、出力ディレクトリ、ファイル名等をとりますので、それらに日本語を含む文字列を指定したい(そもそも英数字のみで構成すればよいのですが)というのが今回の主旨になります。 何かいい方法があれば、ご教示頂けると幸いです。 以上、よろしくお願いいたします。
回答: ありません。Windowsでは入力された文字列を一旦Unicodeに変換して保持します。その上でアプリケーションがUnicodeで読み出した場合はそのまま、ANSIで読み出した場合はUnicodeからANSIに変換してから、それぞれ返します。 C# はUnicodeで動作している為、この辺りは正しくUnicodeが渡されます。 推測ですが、件アプリケーションはコマンドライン引数をANSIで読み出したものの、その後の扱いが不適切な為に文字化けしているのでしょう。 仮に呼び出し側が何らかの異なる値を渡すことができても今度は件のアプリケーションがファイルオープンに失敗します。 結局、問題のアプリケーションを修正するほかありません。(もちろん何らかの設定があればそれを正しく設定する、でも構いませんが)