Problem
我怎样才能使git log
命令输出是否正确显示在 Windows CLI 终端中?
Example
正如您所看到的,我可以正确输入变音字符,但是git log
,输出以某种方式被转义。根据UTF-8编码表 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=256,尖括号之间的代码(<
and >
) 输出中对应于之前输入的内容git config
参数。
我尝试过设置LESSCHARSET
环境变量为utf-8
如建议的类似问题的答案之一 https://stackoverflow.com/a/19436421/2443502,但是输出是乱码:
I know .git/config
使用 UTF-8 正确编码,因为它是由gitk
正如预期的那样。
这里是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=
纯的输出也是一样的Git Bash https://superuser.com/questions/1053633/what-is-git-bash-for-windows-anyway:
所以我相信这个问题与 shell 无关并且与 Git 或其配置本身有关。
好的,我尝试了一下,发现 Windows Git 命令实际上需要 UNIX 变量,例如LC_ALL
为了正确显示波兰语(或其他 UTF-8 字符)。只需尝试这个命令:
set LC_ALL=C.UTF-8
然后享受结果。这是我的控制台上发生的情况(字体“Consolas”,没有chcp
必要的):
Update:
- 好吧,为了像这样的 Windows 命令
type
(在控制台上显示文件)要正常工作,您确实需要chcp 65001
.
- 如果您更喜欢 Git Bash 中的命令,例如
cat
您从上述内容中获利set LC_ALL=C.UTF-8
.
更新 2:如何使更改永久生效
As user 莫诺布莱恩说,创建一个环境变量LC_ALL
并为其赋值C.UTF-8
,无论是全局的还是仅适用于您自己的用户配置文件(抱歉德国屏幕截图):
下次打开命令处理器控制台 (cmd.exe) 时,您应该会在发出命令时看到变量值echo %LC_ALL%
。在 PowerShell 中,您应该在发出命令时看到它$env:LC_ALL
.
使UTF-8代码页永久打开的最简单方法regeedit
并添加一个名为的新值Autorun
字符串类型到节HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
并为其赋值chcp 65001
.
从此以后,每次打开新的 cmd.exe 控制台时都会执行此命令。您甚至可以在新窗口中看到其输出:“Aktive Codepage: 65001”。 (或您各自语言中的类似内容)。
哦,顺便说一句:为了在 PowerShell 中正确显示 UTF-8 编码的文件,您可以使用Get-Content -encoding UTF8 file.txt
or cat -encoding UTF8 file.txt
(cat
是一个别名Get-Content
在 PowerShell 中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)