使git diff正确显示UTF8编码的字符

时间:2013-10-17 19:04:57

标签: git encoding utf-8

我有一个带有瑞典字符的文件(åäö),用UTF8编码。

如果我cat该文件显示正常,但如果我git diff,则会打印特殊字符,例如< F6&gt ;.

示例git diff输出:

-            name: 'Magler<F6>d, S<F6>der<E5>sen',

我想看到的内容:

-            name: 'Magleröd, Söderåsen',

我发现了另一个与git和编码问题相关的问题:git, msysgit, accents, utf-8, the definitive answers 它说所有问题都应该在git版本1.7.10中修复。我有1.8.1.2版本

如何才能正确显示git diff?åäö?

3 个答案:

答案 0 :(得分:50)

git正在转出原始字节。在这种情况下,它并不关心文件的编码。您看到的突出显示的<F6>来自less,可能是PAGER。尝试设置:

LESSCHARSET=UTF-8

答案 1 :(得分:1)

@matt和@twalberg是正确的。该文件实际上不是UTF-8编码的。我的终端(hterm)无法正确输入åäö(但它可以显示和复制/粘贴它们)这一事实并没有帮助解决这个问题......

iconv -f ISO-8859-1 -t UTF-8 in.txt > out_utf-8.txt

解决了我的问题

答案 2 :(得分:0)

git log将通过less not vi打开。

所以你应该把lang设置为更少。

$ export LESSCHARSET=utf-8 && git log