1. ホーム
  2. git

[解決済み] Windows 10 CLI ターミナルでの git log 出力のエンコーディングの問題

2023-01-14 05:48:38

質問

問題点

どのように git log コマンドの出力を Windows CLI ターミナルに正しく表示させるにはどうしたらよいでしょうか。

表示例

見ての通り、発音区分文字は正しく入力できますが git log については、出力がなぜかエスケープされてしまいます。このように UTF-8 エンコーディング表 角括弧の中のコード ( <> ) の出力は、以前にタイプされた git config パラメータに対応する。

を設定しようとしました。 LESSCHARSET 環境変数を utf-8 で提案されているように 同様の問題に対する回答の一つ を実行しても、出力が文字化けしてしまいます。

私は知っている .git/config は正しくエンコードされており utf-8 で処理されるため gitk は期待通りです。

以下は locale というコマンドを出力します。

LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=

EDITです。

出力は、純粋な git-bash :

というわけで、この問題はシェルに依存せず、Gitまたはその設定自体に関係していると思います。

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

さて、少し実験してみたところ、Windows の Git コマンドは実は UNIX の変数を必要とすることがわかりました。 LC_ALL のような UNIX 変数が必要であることがわかりました。このコマンドを試してみてください。

set LC_ALL=C.UTF-8

そして、その結果をお楽しみください。以下は、私のコンソールで起こったことです (フォント "Consolas", no chcp は不要です)。


更新しました。

  • さて、Windows のコマンドで type (コンソールにファイルを表示) のような Windows のコマンドが正しく動作するためには chcp 65001 .
  • また、Git Bashのようなコマンドを好む場合は、次のようにします。 cat のような Git Bash のコマンドが好きな場合は、前述した set LC_ALL=C.UTF-8 .


更新2:変更を恒久化する方法

ユーザーとして モノ・ブレーン が言ったように、環境変数 LC_ALL を作成し、それに値 C.UTF-8 という値を設定します(ドイツ語のスクリーンショットで申し訳ありません)。

次にコマンドプロセッサのコンソール (cmd.exe) を開くと、コマンドを発行したときに変数の値が表示されるはずです。 echo %LC_ALL% . PowerShell では、次のコマンドを発行したときに表示されるはずです。 $env:LC_ALL .

UTF-8 コードページを永続化する最も簡単な方法は、次のように開くことです。 regeedit という名前の新しい値を追加することです。 Autorun という新しい値をセクション HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor を作成し、それに値 chcp 65001 .

今後、新しい cmd.exe コンソールを開くたびに、このコマンドが実行されます。新しいウィンドウにその出力が表示されることもあります: "Aktive Codepage: 65001.quot;(または、各言語で同様のもの)。

ああ、そういえば。PowerShell で UTF-8 でエンコードされたファイルを正しく表示するには、次のようにします。 Get-Content -encoding UTF8 file.txt または cat -encoding UTF8 file.txt ( cat のエイリアスである。 Get-Content の別名である)。