【背景】
公司弄了两台新的虚拟机,用来将原先都部署在一台机器上的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