Windows 10命令提示符下的git log输出编码问题 [英] git log output encoding issues on Windows 10 command prompt
问题描述
问题
如何在Windows命令提示符下正确显示 git log
命令输出?
示例
正如您所看到的,我可以正确输入变音符号,但是在 git log
上,输出以某种方式被转义。根据后的git log输出
我知道 .git / config
用 utf-8
因为它是按照预期由 gitk
处理的。 $ b
这里是 locale
命令输出if必需
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 中也是一样的:
$ b
更新:
类型的(控制台上的显示文件)等Windows命令正常工作,您需要
chcp 65001
。
cat
从上述设置LC_ALL = C.UTF-8
。
更新2:如何使更改永久
正如用户 blaine mono 所述,创建一个环境变量 LC_ALL
an d全局或仅为您自己的用户配置文件分配值 C.UTF-8
(对于德国的屏幕截图,抱歉):
下次打开命令处理器控制台(cmd.exe)时,应该会看到变量值当发出命令 echo%LC_ALL%
时。在PowerShell中,您应该在发布 $ env:LC_ALL
时看到它。
制作UTF-8的最简单方法代码页永久性ist打开 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
或 cat -encoding UTF8 file.txt
( cat
是PowerShell中的 Get-Content
的别名)。
Problem
How to make git log
command output properly displayed on windows command prompt?
Example
As you can see I can type diacritical characters properly but on git log
the output is somehow escaped. According to UTF-8
encoding table the codes between angled brackets (<
and >
) from the output correspond to the previously typed git config
parameters.
I have tried to set LESSCHARSET
environment variable to utf-8
as sugested in one of the answers for similar issue but then the output is garbled:
I know .git/config
is encoded properly with utf-8
as it's handled by gitk
as expected.
Here is locale
command output if necessary
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=
EDIT:
The output is the same also in pure git-bash:
so I believe the problem is shell independent and relates to Git or its configuration itself.
Okay, I experimented a bit and found out that Windows Git commands actually need UNIX variables like LC_ALL
in order to display Polish (or other UTF-8 characters) correctly. Just try this command:
set LC_ALL=C.UTF-8
Then enjoy the result. Here is what happened on my console (font "Consolas", no chcp
necessary):
Update:
- Well, in order for Windows commands like
type
(display file on console) to work correctly, you do needchcp 65001
. - And if you prefer commands from Git Bash like
cat
you profit from the aforementionedset LC_ALL=C.UTF-8
.
Update 2: How to make the changes permanent
As user blaine mono said, create an environment variable LC_ALL
and assign it the value C.UTF-8
, either globally or for your own user profile only (sorry for the German screenshot):
Next time you open a command processor console (cmd.exe) you should see the variable value when issuing the command echo %LC_ALL%
. In PowerShell you should see it when issuing $env:LC_ALL
.
The simplest way to make the UTF-8 code page permanent ist to open regeedit
and add a new value named Autorun
of type string to section
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
and assign it the value chcp 65001
.
Henceforth, this command will be executed each time you open a new cmd.exe console. You even see its output in the new window: "Aktive Codepage: 65001." (or similar in your respective language).
Oh, by the way: In order to display a UTF-8 encoded file correctly in PowerShell you can use Get-Content -encoding UTF8 file.txt
or cat -encoding UTF8 file.txt
(cat
being an alias for Get-Content
in PowerShell).
这篇关于Windows 10命令提示符下的git log输出编码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!