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
猜测文件中的文本类型,但不确定,一般情况下区分单字节编码需要广泛的语言知识。
所以你的回答是,不,在一般情况下,这是不可能的。
来自
在我的 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
猜测文件中的文本类型,但不确定,一般情况下区分单字节编码需要广泛的语言知识。
所以你的回答是,不,在一般情况下,这是不可能的。