

Git Bash (MinGW) でWindows標準のコマンドを打つと結果が文字化けして表示されます。

`route /?` と打った例

[![route /?
と打った例](https://i.stack.imgur.com/3K3L2.png)](https://i.stack.imgur.com/3K3L2.png)

ターミナルオプションで、ロケール設定をしてもうまくいきません。文字化けを解消できる方法はありますか。

[![ターミナルオプション＞Text＞Locale\(UTF8\)](https://i.stack.imgur.com/YJ8Gb.png)](https://i.stack.imgur.com/YJ8Gb.png)


CC BY-SA 4.0
2020-05-08T12:42:19.437
66434
2022-10-23T13:04:30.513
2020-05-09T11:09:42.080
3060
27541
question
mingw git-bash
Git Bash でWindowsコマンドの結果が文字化けする


# 手順

  1. chcp と打ってから、Tabを押して、コマンド補完します 
  2. chcp.com と出るので、続けて、chcp.com 65001 とコマンドします
  3. 確認に、再度、chcp.com と打つと、現在のコードページが確認できます

# 解説

実は、上記のロケールで、SJISを選択すれば、解消するのですが、それだと今度は、lsなどで、日本語ファイル名を表示できなくなります。これは、BashのロケールがUTF8であるためです。  
なので、Windows標準コマンドに関しては、コードページをUnicodeにして、英語で表示させるのがベストプラクティスではないでしょうか。

もっと、いい方法があれば、どしどし、回答してください。


CC BY-SA 4.0
2020-05-08T12:50:01.063
66436
2020-05-08T12:50:01.063
27541
66434
answer


LANGにSJISを設定すれば日本語ファイル名も表示できました。

  * `Options`で`Locale`と`Character set`を次のように設定します。

    * Locale : Ja_JP
    * Character set : SJIS 
  * ターミナル(mintty)で環境変数LANGを次のように設定します。

[code]

    LANG=ja_JP.sjis
    
[/code]

`route /?`を実行しても日本語が崩れません。

[code]

    $ route /?
    
    ネットワーク ルーティング テーブルを操作します。
    
    ROUTE [-f] [-p] [-4|-6] command [destination]
          [MASK netmask]  [gateway] [METRIC metric]  [IF interface]
    
      -f           ルーティング テーブルにあるゲートウェイのエントリをすべてクリア
                   します。このオプションをコマンドと併用した場合、コマンドを実行
                   する前にテーブルがクリアされます。
    
    
[/code]

漢字名のファイルも表示できました。

[code]

    $ ls -l /c/junc/漢字名のファイル.txt
    -rw-r--r-- 1 XXXX XXXX 0 5月   9 01:59 /c/junc/漢字名のファイル.txt
    
[/code]

※ XXXXは伏せています。


CC BY-SA 4.0
2020-05-08T17:04:37.170
66437
2020-05-08T17:04:37.170
35558
66434
answer