【C#】コマンドライン引数に指定した「""」でくくった文字列が半角スペースで別れてしまいハマった
こんばんは、mugihalです。
昨日に引き続き、業務中の覚え書き。
ダブルクォーテーション「""」で括った文字列が半角スペースで別れてしまう
環境:Windows10 Pro
開発環境:Visual Studio 2012
言語:C#
コマンドライン引数として、ダブルクォーテーションで括った要素を一つの引数にしたかったのですが、半角スペースが入ると分かれてしまって困りました。
成功したケース
コマンドプロンプトで実行。
>test.exe "hoge fuga" >引数1 : hoge fuga
失敗したケース
- VisualStudioのプロジェクト→プロパティ→デバッグのコマンドライン引数に「"hoge fuga"」と入力して実行。
- ショートカットのリンク先に「"~\test.exe" "hoge fuga"」と入力して実行。
どちらも、
引数1 : "hoge
引数2 : fuga"
となってしまいました…。
ダブルクォーテーションの間にある半角スペースを認識しています。
というより、ダブルクォーテーションを単なる文字として認識している?
原因は文字コード?
試行錯誤してにらめっこしていたら、なんか文字が違う…。
「"hoge fuga"」という文字列、Word文書ファイルからのコピペをしており、手入力と字体が微妙に違うことに気づきました。
おそらく、VisualStudioとショートカットの入力では、コピー元の文字コードを維持したまま使用することが原因。WordのデフォルトはUnicodeっぽい。
コマンドプロンプトでは、デフォルトで「Shift-JIS」が使用されているため、コピペしたときに自動的に変換されてうまくいった感じですね。
コピペするときは、文字コードも注意するほか、手入力したらどうかテストするように心がけます…。
それでは。