21

Unicode シンボル (ロシア語のテキスト) を含むファイルがあります。タイプミスを修正するとgit diff --color-words=.、行った変更を確認するために使用します。

Unicode (キリル文字) 記号の場合、次のように山かっこで混乱します。

$ cat p1
привет

$ cat p2
Привет

$ git diff --color-words=. --no-index p1 p2
diff --git 1/p1 2/p2
index d0f56e1..d84c480 100644
--- 1/p1
+++ 2/p2
@@ -1 +1 @@
<D0><BF><9F>ривет

git diff --color-words=.私が期待するように、シンボル間の違いではなく、バイト間の違いをチェックしているようです。

gitUnicode シンボルで適切に動作するように指示する方法はありますか?

私の環境に関するUPD :Mac OSとLinuxホストで同じ結果が得られます。

私のシェル変数は次のとおりです。

BASH=/bin/bash
HOSTTYPE=x86_64
LANG=ru_RU.UTF-8
OSTYPE=darwin10.0
PS1='\h:\W \u\$ '
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
TERM=xterm-256color
TERM_PROGRAM=iTerm.app
_=-l

次のように git config をデフォルト設定にリセットしました。

$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true

git バージョン

$ git --version
git version 1.7.3.5
4

6 に答える 6

36

私にとってless— git pager — は責任がありました (@kostix に感謝)。ページャーを完全に無効にして実験します。

git --no-pager diff p1 p2

私の場合は、絵文字を含むコミット メッセージでした。それは基本的に同じ問題です。

$ git log --oneline
93a1866 <U+1F43C>

$ git --no-pager log --oneline
93a1866 

$ export LESS='--raw-control-chars'
$ git log --oneline
93a1866 

$ git config --global core.pager 'less --raw-control-chars'
$ git log --oneline
93a1866 

NB : この--RAW-CONTROL-CHARSオプションはlessANSI カラー エスケープを通過させますが、他の制御文字 (絵文字を含む) は変更します。私lessはグローバルに設定されて--RAW-CONTROL-CHARSおり、私のgitページャーは--raw-control-chars上記のように設定されています。

于 2015-02-01T06:22:46.843 に答える
19

これに対する私にとっての最善の解決策は、設定export LESSCHARSET=utf-8です。

この場合、 と の両方git log -pgit diff問題なくユニコードを示します。

于 2016-12-25T20:24:18.200 に答える
1

toolbearの答えは私にとってはgit --no-pager diffうまくいきませlessんでした.

私はたくさんのことを試しましたが、唯一助けになったのは、.git\config にキリル文字から utf-8 への明示的な変換を含めることです (私は Windows 7 を使用しています)。

[pager]
diff = iconv.exe -f cp1251 -t utf-8 | less  

pager.diffコマンドでのみエンコードの問題があったため、ここで特に変更しdiffます。いくつかの奇妙な理由logreflog、私と一緒にうまくいっていました。しかし、他のコマンドにもエンコードの問題がある場合は、次のように、すべてのコマンドのページャーを変更する必要があります。

[core]
...
pager = iconv.exe -f cp1251 -t utf-8 | less 
于 2021-03-12T11:22:50.800 に答える
0

xterm が実際には Unicode 文字を印刷できない場合があるという報告をたくさん見てきました。たぶん、少なくとも解決策の出発点です。

于 2013-11-22T08:47:47.147 に答える