问题纠葛
在powershell
下,使用git diff
, git log
查询到中文提交的代码以及提交记录的时候总能发现乱码问题。
这对于那些用图形化界面的程序员大大们当然是没有任何问题的。
虽然本帅也用idea内嵌的git套件,但是git diff
, git log
乱码对于本帅来说还是如鲠在喉,芒刺在背,尤其是在使用这两个命令的时候。
所谓逼死强迫症,趁今天有点闲,遂除掉这道心病。
现象
> git diff --cached
diff --git a/src/main/java/just/fun/heihei.java b/src/main/java/just/fun/heihei.java
new file mode 100644
index 0000000..38411be
--- /dev/null
+++ b/src/main/java/just/fun/heihei.java
@@ -0,0 +1,8 @@
+package just.fun;^M
+^M
+public class heihei {^M
+ public static void main(String[] args) {^M
+ System.out.println("helloWord");^M
+ System.out.println("<E4><B8><AD><E5><8D><AB>");^M
+ }^M
+}^M
>git log -1
commit a0b5b19ee7c883780f72ceb4cddc4fd4121f44c2
Author: shuai.pan <shuai.pan@corp.to8to.com>
Date: Mon Jun 25 18:22:24 2018 +0800
<E4><BF><AE><E6><94><B9>idc<E4><B8><9A><E4><B8><BB><E6><96><87><E6><A1><88>
commit ed17bc4511a143c729c1446ca0ef9966ae3ca3ee
Author: shuai.pan <shuai.pan@corp.to8to.com>
Date: Mon Jun 25 17:50:55 2018 +0800
add fxxk pacakge
强迫症患者受不了,于是在网上搜寻良久,大部分解决方案是:
git config --global color.ui true
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding gbk|utf-8
执行各种命令,就差使用全部进行组合了(排列没必要),但是问题依然存在(心中一个++飞过)。
再看上述命令,提交的编码是utf-8,日志输出确实gbk,不得法,于是换成如下:
最终解决在环境变量中配置:LESSCHARSET值为utf-8即可。顺带学习了一波git config相关的命令。
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8 ## linux bash配置环境变量
set LESSCHARSET=utf-8 #windows配置环境变量
powershell git diff
powershell git log
cmder git log, git diff
总结
终于搞定这个问题,治好这强迫症心病,开心得不行。
耗费时间巨大:但是花费了大概3小时,才解决。加上n久以前的时间,那不少于一天了@_@
考虑问题不全面:一直都在考虑git上的传输编码问题,就没考虑过bash上输出是否支持utf-8这总格式。毕竟为啥在别的idea上面可以实现中文,而bash不可以?不就是最后这输出的问题么?
附:
系统 win 7 专业版 64位
cmder 版本 Version 1.3.6.678
网友评论