开发经常会找运维文件出现乱码,大部分就是中文乱码,遇到这种问题作为运维人员需要进行各种测试和验证,才能确定哪里的字符集编码不对。可能操作终端(如SecureCRT),操作系统,也可能文件内容编码。
一、关于几种常见字符集编码定义
1.定义
1)UTF-8:国际通用字库,支持现今世界各种不同语言。
其中UTF8属于编码方式,en_US.UTF-8、zh_CN.UTF-8属于UTF-8编码方式下不同的字符集。
如果你的LANG环境变量是en_US.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是英文的。
如果你的LANG环境变量是zh_CN.UTF-8,那么系统的菜单、程序的工具栏语言、输入法默认语言就都是中文的。
2)gb2312 :是国标,是中国的字库,里面仅涵盖了汉字和一些常用外文
字库规模: UTF-8(字全) > gb2312(只有汉字)
二、一个典型场景
1. 场景说明
某文件编码格式为GB2312, 操作系统默认的编码为en_US.UTF8, 访问终端默认字符集编码为UTF8.
分析:
文件编码为GBK编码方式,而客户端及操作系统都UFT8编码,所以两种不同编码方式如果不进行
编码转化对于中文字符,由于占用字节数及编码方式不一样,可能导致中文乱码
解决思路:
1)把客户端和操作系统编码改成GBK编码字符集
2)把文件内容及文件编码转为UTF8编码方式
解决方案:
本场景解决方案采用第一种。具体方式就是客户端字符编码设成default,操作系统执行export LANG=zh_CN.gb2312
问题解决。