Windows 下 git-bash log 乱码的原因及方案

前言

在 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 显示历史记录时需要经历下面这几步:

  1. 读取保存好的历史。
  2. 转换数据的编码。
  3. 将数据传递给 less 来控制分页。
  4. 终端显示。

这 4 步刚好对应的前面所说的 4 个设置。

设置 作用
i18n.commitencoding 在 commit 时保存的编码
i18n.logoutputencoding 读取数据后要转换的目标编码
LESSCHARSET 指定 less 接受的编码
Options -> Text -> Locale 界面输出能接受的编码

这是我目前的理解,以后有新的理解再补充。

你可能感兴趣的:(Windows 下 git-bash log 乱码的原因及方案)