イヤホンと一緒に歩んでいく

某家電量販店のオーディオコーナーで働いていました。みごとに沼にはまりました。はい。

【C#】コマンドライン引数に指定した「""」でくくった文字列が半角スペースで別れてしまいハマった

こんばんは、mugihalです。

昨日に引き続き、業務中の覚え書き。

ダブルクォーテーション「""」で括った文字列が半角スペースで別れてしまう

環境:Windows10 Pro
開発環境:Visual Studio 2012
言語:C#

コマンドライン引数として、ダブルクォーテーションで括った要素を一つの引数にしたかったのですが、半角スペースが入ると分かれてしまって困りました。


成功したケース
コマンドプロンプトで実行。

>test.exe "hoge fuga"
>引数1 : hoge fuga


失敗したケース

  1. VisualStudioのプロジェクト→プロパティ→デバッグコマンドライン引数に「"hoge fuga"」と入力して実行。
  2. ショートカットのリンク先に「"~\test.exe" "hoge fuga"」と入力して実行。

どちらも、
引数1 : "hoge
引数2 : fuga"
となってしまいました…。
ダブルクォーテーションの間にある半角スペースを認識しています。
というより、ダブルクォーテーションを単なる文字として認識している?

原因は文字コード

試行錯誤してにらめっこしていたら、なんか文字が違う…。
「"hoge fuga"」という文字列、Word文書ファイルからのコピペをしており、手入力と字体が微妙に違うことに気づきました。

おそらく、VisualStudioとショートカットの入力では、コピー元の文字コードを維持したまま使用することが原因。WordのデフォルトはUnicodeっぽい。
コマンドプロンプトでは、デフォルトで「Shift-JIS」が使用されているため、コピペしたときに自動的に変換されてうまくいった感じですね。


コピペするときは、文字コードも注意するほか、手入力したらどうかテストするように心がけます…。

それでは。



[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

ロジクール ワイヤレスキーボード K275
価格:2570円(税込、送料無料) (2019/9/5時点)

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

マイクロソフト Pro IntelliMouse Shadow Black NGX−00018
価格:6530円(税込、送料無料) (2019/9/5時点)