从帖子
http://topic.csdn.net/u/20110106/20/f11ef8dd-44ec-478e-b78a-73240bcdde43.html
处摘抄提炼而来
原理:强制log统一使用utf-8编码。
1.在 etc/gitconfig 中添加:
说明:
1) gui.encoding = utf-8 解决在 $ git gui 和 gitk 里中文乱码。
2) i18n.commitencoding = utf-8 设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与Unix上的提交保持一致!
3) i18n.logoutputencoding = gbk 使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决 MSYS Bash 中 $ git log 乱码。
2.使得 $ git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 etc/profile 中添加:
网上流传的方法都没有使用logoutputencoding = gbk选项。
而我认为这才是最终解决中文commit log乱码的根本方案。
MsysGit的中文乱码,有两方面的原因:
1. MSYS Bash不支持utf-8编码的中文显示,而且没有自动将utf-8编码转换成gbk编码的选项。
2. Git GUI无法自动检测当前文件编码,导致只能由用户指定:encoding = utf-8 ,弊端是非utf-8编码的文本将显示乱码。
也鉴于这个原因,如果是开发跨平台项目,建议统一使用UTF-8编码,以尽可能的解决中文乱码问题。
另外关于这个问题:请教如何在 MSYS 的 Bash 中将所有输出自动从 UTF-8 转换到GBK么?
这个我不知能否做到,但是可以让bash正确显示UTF-8字符。因为msys的bash和windows的cmd相关的,也是内含了windows的代码页。他默认的代码页是GBK的。
在bash里输入
然后按Alt-space,选择属性,在字体栏里选择字体为非点阵字体(在我这里为Consolas和Lucida Console字体),然后在bash里输入utf-8输出的命令,你会发现就不会乱码了。缺点是gbk输出的就会乱码。