git log
コマンド出力をWindowsコマンドプロンプトに適切に表示する方法
ご覧のとおり、発音区別符号を正しく入力できますが、git log
では出力が何らかの形でエスケープされます。 UTF-8
エンコーディングテーブル によると、出力からの山括弧(<
と>
)の間のコードは、以前に入力されたgit config
パラメーターに対応します。
同様の問題に対する回答の1つ で推測されるように、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=
出力はpuregit-bashでも同じです:
したがって、問題はシェルに依存せず、Gitまたはその構成自体に関連していると思います。
さて、私は少し実験して、ポーランド語(または他のUTF-8文字)を正しく表示するために、Windows Gitコマンドが実際にLC_ALL
のようなUNIX変数を必要とすることを発見しました。このコマンドを試してください:
set LC_ALL=C.UTF-8
その後、結果をお楽しみください。コンソールで何が起こったのかを以下に示します(フォント「Consolas」、chcp
は不要):
更新:
type
(コンソールにファイルを表示する)のようなWindowsコマンドが正しく機能するためには、chcp 65001
が必要です。cat
のようなGit Bashからのコマンドを好む場合は、前述のset LC_ALL=C.UTF-8
から利益を得ます。更新2:変更を永続的にする方法
ユーザーblaine monoが言ったように、環境変数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」に出力が表示されます。 (またはそれぞれの言語で同様)。
ああ、ところで:UTF-8でエンコードされたファイルをPowerShellで正しく表示するには、Get-Content -encoding UTF8 file.txt
またはcat -encoding UTF8 file.txt
(Get-Content
のエイリアスであるcat
を使用できますパワーシェル)。
PowerShellでset LC_ALL=C.UTF-8
に相当するものに興味がある人は、次のとおりです。
$env:LC_ALL='C.UTF-8'
ただし、これは現在のセッションでのみ機能します。永続的にするには、LC_ALL
という名前の環境変数を作成し、値をC.UTF-8
にします。
git bash
でWIN10
を使用します。私に関しては、4つの設定が私の予想通りの外観になっています。
env
設定。 LC_ALL=C.UTF-8
、LESSCHARSET=UTF-8
をPATH
にグローバルに追加します。
git
config。 git config --global i18n.logOutputEncoding utf-8
。
git bash
設定。 Options-> Text-> Character set
をutf-8
に設定します。または、locale
とCharacter set
の両方をdefault
に設定します。正しいencoding
を選択するのは十分賢明です。
できた.
デフォルトの代わりにWindows PowerShellコマンドプロンプトを使用する必要がありました(Windowkey + X)