Windows 10命令提示符下的git log输出编码问题

Mar*_*tek 61 git locale command-prompt character-encoding

问题

如何git log在Windows命令提示符下正确显示命令输出?

git命令序列导致问题 正如你所看到的,我可以正确输入变音字符,但git log输出却以某种方式被转义.根据UTF-8编码表,来自输出的成角度括号(<>)之间的代码对应于先前键入的git config参数.

我曾试图设置LESSCHARSET环境变量,utf-8如sugested的答案类似的问题之一,但随后的输出是乱码:

设置LESSCHARSET = utf8后的git log输出

我知道.git/config编码正确,utf-8因为它gitk按预期处理.

适当的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=
Run Code Online (Sandbox Code Playgroud)

编辑:

在纯git-bash中输出也是一样的:

在此输入图像描述

所以我认为问题是shell独立的,并且与Git或其配置本身有关.

kri*_*aex 116

好吧,我进行了一些实验,发现Windows Git命令实际上需要UNIX变量LC_ALL,以便正确显示波兰语(或其他UTF-8字符).试试这个命令:

set LC_ALL=C.UTF-8
Run Code Online (Sandbox Code Playgroud)

然后享受结果.这是我的控制台上发生的事情(字体"Consolas",没有chcp必要):

Windows控制台CMD


更新:

  • 好吧,为了使Windows命令type(如控制台上的显示文件)正常工作,您需要chcp 65001.
  • 如果您喜欢Git Bash的命令,就像cat您从前面提到的那样获利set LC_ALL=C.UTF-8.

Windows控制台CMD,第2部分


更新2:如何使更改永久化

正如用户blaine mono所说的那样,创建一个环境变量LC_ALL并为其分配值C.UTF-8,无论是全局还是仅为您自己的用户配置文件(抱歉德国屏幕截图):

创建环境变量

下次打开命令处理器控制台(cmd.exe)时,您应该在发出命令时看到变量值echo %LC_ALL%.在PowerShell中,您应该在发布时看到它$env:LC_ALL.

使UTF-8代码页永久化的最简单方法是打开并向section regeedit添加一个名为Autorunstring类型的新值, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor并为其赋值chcp 65001.

注册编辑

此后,每次打开新的cmd.exe控制台时都会执行此命令.您甚至可以在新窗口中看到它的输出:"Aktive Codepage:65001".(或用您各自的语言类似).

哦,顺便说一句:为了在PowerShell中正确显示UTF-8编码文件,您可以使用Get-Content -encoding UTF8 file.txtcat -encoding UTF8 file.txt(cat作为Get-ContentPowerShell中的别名).


mon*_*ine 41

如果有人对PowerShell的等价物感兴趣set LC_ALL=C.UTF-8,那就是:

$env:LC_ALL='C.UTF-8'
Run Code Online (Sandbox Code Playgroud)

但是,这仅适用于当前会话.要使其永久化,请创建一个LC_ALL以该值命名的环境变量C.UTF-8.

  • 配置文件可以通过例如运行来编辑:记事本 $profile 然后在某处添加一行单声道 blaine 建议,$env:LC_ALL='C.UTF-8' (3认同)

Ayş*_*Nur 7

我使用的Git通过PowerShell核心v7.0.3Windows终端在Windows 10。

我一直在浏览答案并尝试了许多答案。对我有用的解决方案是:

这些解决方案都单独工作。我选择使用 Git 命令,因为问题似乎与 Git 有关,并且 Powershell 配置文件保持清洁。


W.P*_*rin 5

我用的git bashWIN10。对于我来说,四个设置使外观符合我的期望。

  • env设置。将LC_ALL=C.UTF-8,添加LESSCHARSET=UTF-8PATH全局。

  • git配置。git config --global i18n.logOutputEncoding utf-8

  • git bash设置。设置Options-> Text-> Character setutf-8。或将localeCharacter set都设置为default。选择正确的方法足够聪明encoding

做完了