Windows 下 git-bash log 乱码的原因及方案
2020-05-02 本文已影响0人
JSTZ
前言
在 Windows 下用 git log
来看历史提交记录时,如果提交消息是中文,有可能就会乱码。为什么说有可能呢?不知道 git-bash 抽什么风,我刚安装时不乱码,用几天后就乱码了。这个原因我没有找到。关于怎么解决乱码的方式,网上有很多人写了,大致就是下面的这些:
如果 git-bash 用的不是 Windows 自带的控制台(安装时的默认选项),先在设置 Options -> Text -> Locale
中选择 UTF-8,再运行下面的代码:
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
# 在 git-bash 的 Options -> Text -> Locale 中选择 utf-8
如果 git-bash 用的是 Windows 自带的控制台,运行下面的代码:
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding gbk
export LESSCHARSET=latin1
两者存在 utf-8/gbk 和 utf-8/latin1 的区别。
乱码原因
git-bash 在执行 git log
显示历史记录时需要经历下面这几步:
- 读取保存好的历史。
- 转换数据的编码。
- 将数据传递给 less 来控制分页。
- 终端显示。
这 4 步刚好对应的前面所说的 4 个设置。
设置 | 作用 |
---|---|
i18n.commitencoding | 在 commit 时保存的编码 |
i18n.logoutputencoding | 读取数据后要转换的目标编码 |
LESSCHARSET | 指定 less 接受的编码 |
Options -> Text -> Locale | 界面输出能接受的编码 |
这是我目前的理解,以后有新的理解再补充。