icicleling Blog

解决git乱码

最近发现很奇怪一个事,公司的git在终端里中文乱码了,十一放假前还好好的。

看了看同事的也乱码了,回家看看自己的电脑也是一样。神了。明明之前还好好的

问题不大,试试吧

本解决方案只适用于windows

症状

在本地新建git库,新建一个文件,运行git status,会出现以下这种乱码

    Untracked files:
        (use "git add <file>..." to include in what will be committed)

            "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

然后如果你用提交的信息使用中文,运行git log时就会出现下面这种乱码

    Author: icicle <xxxxxx@xxx.com>
    Date:   Tue Oct 16 22:25:06 2018 +0800

    <E4><B8><AD><E6><96><87><E6><8F><90><E4><BA><A4>

这很烦啊…

如何解决

第一条,针对文件名乱码

    git config --global core.quotepath false

第二条,针对log乱码

这个稍微有点复杂,因为涉及到环境变量,要贴命令也行,你要图快的话。

    setx LESSCHARSET 'utf-8'

这条命令是给当前用户添加一条环境变量,名字是'LESSCHARSET’,值是'utf-8'

然后你重启一下命令行,再试试git log,现在就应该可以正常显示中文了。

但还是建议你自己打开环境变量,自己动手添一条。名字就是'LESSCHARSET',值是'utf-8’。没有单引号。

其他的碎碎念

如果你只是想快速解决问题,这个就没啥好看的了。解决问题就上面那两条。下面就是简单解释一下这两条干了什么。

但我还是建议看一下,又不费劲对不。

第一条

对当前用户的git全局设置增加一条core.quotepath 设置为false。

第二条

setx命令,永久增加一条环境变量。当然还有个命令叫set,那是临时增加一条。

增加的就是这个LESSCHARSET,像是把less的字符集设置为utf-8。

那么less是个什么东西呢,他是git的分页器。分页器是什么东西呢?就是当你有很多log,或者很多其他的什么,git不会一下子都给你展示出来,而是你按一下回车出一行,按q退出。

所以网上还有一种解决log乱码的方法,分页器不显示中文是吧,干脆,不用分页器不就行了…所以出现这种命令git config --global core.pager '',设置为空,或者是more。确实是不乱码了,但是没分页了,打印个log,刷~ 一直给你显示到项目最初始的commit,没法看了。

基本上来说,我就靠的这两条命令解决的这问题,就酱。

This work is licensed under CC BY-NC-SA 4.0