An old dog learns code

mac终端中文显示数字编码的设置问题

October 16, 2019


问题描述

新部署的服务器,查看git commit message不显示中文了,全是各种数字编码,而旧服务器显示一切正常,这显然是编码问题了。

原因

简单google了一下,发现是服务器字符集和本机字符集不匹配。

输入locale查看本机的配置,发现LANG和LC_ALL都为空

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

而服务器上的LANG和LC_ALL都是utf-8

LANG="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

解决方案

本地用的zsh,所以在本地打开zsh配置文件vi ~/.zshrc,有一段注释的代码,输入下面的内容

# You may need to manually set your language environment
  export LANG="en_US.UTF-8"
  export LC_ALL="en_US.UTF-8"

接着重启终端,或者 source ~/.zshrc使设置生效就可以了,done