web-dev-qa-db-ja.com

Windows 10コマンドプロンプトでのgitログ出力エンコードの問題

問題

git logコマンド出力をWindowsコマンドプロンプトに適切に表示する方法

git commands sequence leading to the problem ご覧のとおり、発音区別符号を正しく入力できますが、git logでは出力が何らかの形でエスケープされます。 UTF-8エンコーディングテーブル によると、出力からの山括弧(<>)の間のコードは、以前に入力されたgit configパラメーターに対応します。

同様の問題に対する回答の1つ で推測されるように、LESSCHARSET環境変数をutf-8に設定しようとしましたが、出力が文字化けします。

git log output after setting LESSCHARSET=utf8

.git/configutf-8で適切にエンコードされているのは、gitkで処理されるためです。

Proper gitk output

必要な場合の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でも同じです:

enter image description here

したがって、問題はシェルに依存せず、Gitまたはその構成自体に関連していると思います。

54

さて、私は少し実験して、ポーランド語(または他のUTF-8文字)を正しく表示するために、Windows Gitコマンドが実際にLC_ALLのようなUNIX変数を必要とすることを発見しました。このコマンドを試してください:

set LC_ALL=C.UTF-8

その後、結果をお楽しみください。コンソールで何が起こったのかを以下に示します(フォント「Consolas」、chcpは不要):

Windows console CMD


更新:

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

Windows console CMD, part 2


更新2:変更を永続的にする方法

ユーザーblaine monoが言ったように、環境変数LC_ALLを作成し、グローバルまたは独自のユーザープロファイルのみに値C.UTF-8を割り当てます(ごめんなさいドイツのスクリーンショット):

Create environment variable

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

UTF-8コードページを永続的なものにする最も簡単な方法は、regeeditを開き、Autorunという名前の新しい値をセクションHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processorに追加して、値chcp 65001

Registration editor

以降、このコマンドは、新しいcmd.exeコンソールを開くたびに実行されます。新しいウィンドウ「Aktive Codepage:65001」に出力が表示されます。 (またはそれぞれの言語で同様)。

ああ、ところで:UTF-8でエンコードされたファイルをPowerShellで正しく表示するには、Get-Content -encoding UTF8 file.txtまたはcat -encoding UTF8 file.txtGet-Contentのエイリアスであるcatを使用できますパワーシェル)。

103
kriegaex

PowerShellでset LC_ALL=C.UTF-8に相当するものに興味がある人は、次のとおりです。

$env:LC_ALL='C.UTF-8'

ただし、これは現在のセッションでのみ機能します。永続的にするには、LC_ALLという名前の環境変数を作成し、値をC.UTF-8にします。

36
mono blaine

git bashWIN10を使用します。私に関しては、4つの設定が私の予想通りの外観になっています。

  • env設定。 LC_ALL=C.UTF-8LESSCHARSET=UTF-8PATHにグローバルに追加します。

  • git config。 git config --global i18n.logOutputEncoding utf-8

  • git bash設定。 Options-> Text-> Character setutf-8に設定します。または、localeCharacter setの両方をdefaultに設定します。正しいencodingを選択するのは十分賢明です。

できた.

4
W.Perrin

デフォルトの代わりにWindows PowerShellコマンドプロンプトを使用する必要がありました(Windowkey + X)

0
john ktejik