Git 能否在 UTF-8 终端中正确显示 ISO Latin 1 重音符号?

Could Git correctly display ISO Latin 1 accents in a UTF-8 terminal?

来自

的分支

在我的 MinTTY(Windows 上的 Cygwin)中,git grep 显示奇怪的字符而不是重音符号:

经验证,文件类型似乎是:

ISO-8859 text, with very long lines, with CRLF line terminators

虽然我的 MinTTY 设置为 UTF-8:

# Text
Font=Powerline Consolas
FontHeight=9
BoldAsFont=yes
BoldAsColour=yes
AllowBlinking=yes
Locale=C
Charset=UTF-8

# Terminal
Term=xterm-256color

当然,当从不同的 repos 中搜索文件时,我们永远不知道它是哪种编码。

有没有办法让 Git Grep 表现得更好?

PS-(附带问题)这些口音的颜色规格是什么(此处显示为蓝底黄字)?

git grep,很像 grep,显示文件的内容,就像它在工作树中一样,没有任何转换。但是,与 grep 不同的是,它将通过 less 进行管道传输。 less 尊重您的区域设置环境(例如,LC_* 选项),它会相应地呈现数据。

如果您的环境报告的是 UTF-8 而您有非 UTF-8 数据,less 将按照您在此处看到的那样对其进行编码,因为通常备选方案要么是替换字符,要么什么都不是,这在查看二进制文件时不是很有用。

由于less不知道正在使用什么编码,不同的编码会将同一字节映射到不同的 Unicode 字符,从而映射到不同的 UTF-8 序列,所以无法自动转换。 less 甚至不知道文件是文本文件还是二进制文件。 file 猜测文件中的文本类型,但不确定,一般情况下区分单字节编码需要广泛的语言知识。

所以你的回答是,不,在一般情况下,这是不可能的。