[Linux] 解决终端显示乱码问题

【背景】

公司弄了两台新的虚拟机,用来将原先都部署在一台机器上的JIRA, Fisheye, Confluence迁移到这两台机器上,使用SecureCRT进行登录,使用相关命令时,一台出现乱码,另外一台正常显示,使用vim时,也是一样,所以来总结总结乱码问题的解决方法。

【解决】

1. 两台相关截图

第一台 第二台

2. 在网上找到方法说是需要修改/etc/sysconfig/i18n,比较两台机器上的这个文件内容,发现乱码机器为空,非乱码机器为如下:

#LANG="zh_CN.UTF-8"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

3. 按照网上查到的相关资料表明确实是需要修改此文件,修改之

vim /etc/sysconfig/i18n

  修改之后,发现没法更新,我使用的sysadmin登录的,查看文件权限:

  这样种办法只能找到root帐号,再进行更新,我们这种帐号不可能给出来,只能找运维部门解决。

4. 继续搜索,有贴子里提到这么一句话“远程工具与服务器的字符集是否一样”,想着我使用的是SecureCRT进行的登录,所以尝试着修改一下工具的字符集,找到如下设置:

  

  修改这里的字符编码,使用locale查看本机字符编码如下:

  

  修改终端字符编码为UTF-8,最终编码显示正常,和另一台机器一样

总结

再次进行资料搜集之后,总结乱码如下解决办法:

0. 查看远程工具与服务器的字符集是否一样

1. 修改/etc/sysconfig/i18n:

#LANG="zh_CN.UTF-8"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

2. 修改~/.bash_profile文件,并执行source ~/.bash_profile(在不重启系统的情况下使新环境变量生效):

LANG="zh_CN.GB18030"

3. 在bash环境下直接执行:

export LANG=zh_CN.GB18030
原文地址:https://www.cnblogs.com/garinzhang/p/3613282.html