Windows 10命令提示符下的git log输出编码问题 [英] git log output encoding issues on Windows 10 command prompt

查看:645
本文介绍了Windows 10命令提示符下的git log输出编码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题



如何在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

  • 如果你喜欢Git Bash的命令,比如 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 need chcp 65001.
  • And if you prefer commands from Git Bash like cat you profit from the aforementioned set 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆