Mar*_*tek 61 git locale command-prompt character-encoding
如何git log在Windows命令提示符下正确显示命令输出?
正如你所看到的,我可以正确输入变音字符,但git log输出却以某种方式被转义.根据UTF-8编码表,来自输出的成角度括号(<和>)之间的代码对应于先前键入的git config参数.
我曾试图设置LESSCHARSET环境变量,utf-8如sugested的答案类似的问题之一,但随后的输出是乱码:
我知道.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=
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必要):
更新:
type(如控制台上的显示文件)正常工作,您需要chcp 65001.cat您从前面提到的那样获利set LC_ALL=C.UTF-8.更新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.txt或cat -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.
我使用的Git通过PowerShell核心v7.0.3内Windows终端在Windows 10。
我一直在浏览答案并尝试了许多答案。对我有用的解决方案是:
git config --global core.pager 'less --raw-control-chars'$env:LC_ALL = 'C.UTF-8' 到当前的 Powershell 配置文件这些解决方案都单独工作。我选择使用 Git 命令,因为问题似乎与 Git 有关,并且 Powershell 配置文件保持清洁。
我用的git bash上WIN10。对于我来说,四个设置使外观符合我的期望。
env设置。将LC_ALL=C.UTF-8,添加LESSCHARSET=UTF-8到PATH全局。
git配置。git config --global i18n.logOutputEncoding utf-8。
git bash设置。设置Options-> Text-> Character set到utf-8。或将locale和Character set都设置为default。选择正确的方法足够聪明encoding。
做完了
| 归档时间: |
|
| 查看次数: |
10956 次 |
| 最近记录: |