1. ホーム
  2. git

[解決済み] Git で UTF-8 でエンコードされたパス名をコンソールウィンドウに正しく表示させるには?

2023-07-27 15:13:47

質問

ファイル名をUTF-8にしているのですが、gitでは問題なく処理され、ファイルも正しく作成され、githubのページにも正しく表示されます。ただし、コンソールでは以下のように表示されます。ASCII127を超えるUTF-8でエンコードされた文字をgitがコンソールに正しく表示することは可能でしょうか?

git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   .gitignore
#       modified:   editfile.js
#       modified:   "\321\203\321\201\321\202\320\260\320\275\320\276\320\262"
#
no changes added to commit (use "git add" and/or "git commit -a")

アップデイト

ロケールについて質問されたので、以下のように出力してみました。 locale コマンドの出力です。

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

どのように解決するのですか?

git は常に 8 進数の utf8 表示を使用しており、実際の名前を表示する方法の 1 つは printf を bash シェルで使用することです。

によると このコメント を含む Windows の msysgit bash でも動作します。 printf (を含んでいます(そして " のように使うことができます。 git のチェックアウトで 8 進数の文字を使うには? ")のように使うことができます。

しかし、それでは次のようなコマンドの出力は変わりません。 git status または git ls-files . しかし、Git 1.7.10 で unicode がサポートされるようになってから、この wikiページ が言及するようになりました。

<ブロッククオート

デフォルトでは、git は非 ASCII ファイル名をクォートした八進数表記、つまり " で表示します。 \nnn\nnn... "です。 で無効にすることができます。 :

 git config core.quotepath off

あるいは、すべてのリポジトリで使用するために

 git config --global core.quotepath off

ということを頭に入れておいてください。

デフォルトのコンソールフォントは、Unicodeに対応していません。コンソール フォントを Lucida Console や Consolas などの TrueType フォントに変更します。

セットアップ プログラムは、インストールするユーザーに対してのみ、自動的にこれを行うことができます。