まずwhere
はWindowsのコマンドです。Git Bash内のコマンドではないことに注意してください(Git Bash内で実行ファイルを探すコマンドはwhich
です)。
日本語環境のWindowsにおいて、ほとんどのWindowsのコマンドは文字コードがSJIS(正式にはWindows-31JというShift_JISの亜種。CP932、MS932とも)のコンソールでしか日本語を正常に出力することが出来ません。他の文字コードであった場合、日本語を出力しようとすると文字化けを起こします。ただし、コンソール自体がSJIS以外となっている場合は、英語でメッセージになります。コマンドプロンプトであれば、chcp
コマンドでどの文字コードなのかの確認と変更が出来ます。よく使う物として、SJISが932、UTF-8が65001です。
スタートメニューにあるGit Bashはminttyというコンソールを使います。デフォルトでは、このコンソールはUTF-8にであり、それをminttyとbashが認識してます(LANG環境変数で確認できます)。しかし、Windows側は通常のコマンドプロンプト同じくSJISで動作していると判断しているままです。chcp
はmintty上で使えませんので、一度cmd
とコマンドプロンプトに切り替えてから、chcp
と打つと932と表示されることで確認が出来ます。
minttyはUTF-8ですので、UTF-8の文字列であれば、正しく表示可能です。しかし、where
はWindows側の設定に従いSJISの文字列で出力しようとします。こうして文字コードの不一致が起きて文字化けしてしまうと言うことです。これを防ぐには文字コードを一致させる必要があります。
残念ながら、スタートメニューから起動するGit Bashについて、Windows側を文字コードを変更する方法は見つけられませんでした(ConEmu等を使えば一応可能です)。ですので、Git Bash側をSJISにします。コンソールウィンドウのタイトルバーを右クリックし、メニューで「Options...」を選びます。[Text]を開いて、[Locale]を"ja_JP"、[Character set]を"SJIS Japanese"にし、[Save]をクリックします。あとは、Git Bashを開き直してください。mintty側もSJISになるため、where
コマンドでも文字化けが起きなくなります。
Visual Studio Codeはスタートメニューとは呼び出し方が異なりますので、SJISとして認識されるようになっているのだと思われます。なお、UTF-8に合わせた場合、日本語ではなく英語のメッセージになります。これは、WindowsがUTF-8がどの言語なのか判断することが出来ないからです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/16 03:41