引入:
最近在学习运维相关的技术,经常会用到SecureCRT、PuTTy等远程登录软件来访问Linux系统。而在安装Linux系统的时候所选择的系统语言为中文。由于Windows自身编码与Linux不一致,使得汉字只能在一端看到,另一端则会为乱码。本篇博文,可以帮助你彻底摆脱乱码困扰。
编码:
编码是指将某一字符序列对应到一指定集合中某一东西(例如可能显示为一种自然数序列,交流所用的字母表或者字音表),再将其对应到另一个给定的集合中的其它东西,如一个自然数序列、8位字节或者电脉冲,以便于文本在计算机中存储和通过通信网络的发送。
维基百科-编码
系统编码:
在计算机上使用的操作系统,因其所采用标准的不同导致在各个方面均存在差异,对于字符的表达方式——编码也是其中之一。
流行的字符编码:
ISO/IEC 646
ASCII
EBCDIC
ISO/IEC 8859:
ISO/IEC 8859-1, ISO/IEC 8859-2, ISO/IEC 8859-3, ISO/IEC 8859-4, ISO/IEC 8859-5, ISO/IEC 8859-6, ISO/IEC 8859-7, ISO/IEC 8859-8, ISO/IEC 8859-9, ISO/IEC 8859-10, ISO/IEC 8859-11, ISO/IEC 8859-13, ISO/IEC 8859-14, ISO/IEC 8859-15, ISO/IEC 8859-16
DOS 字符集,也被称作IBM 代码页:
CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869
Windows 字符集:
Windows-1250
Windows-1251 用于西里尔字母表
Windows-1252
Windows-1253
Windows-1254
Windows-1255 用于希伯莱语
Windows-1256 用于阿拉伯语
Windows-1257
Windows-1258 用于越南语
KOI8-R, KOI8-U, KOI7
MIK
印度文字资讯交换码
越南资讯交换标准代码
大五码
香港增补字符集
国家标准代码
GBK
GB 2312
GB 18030
中文资讯交换码
中文标准交换码
ISO/IEC 2022, Shift JIS, EUC
统一码UTF-8 (以及其子集,如16位的基本多文种平面)。
注意:上面红色加粗的文字就是我们需要关注的编码。
实验验证:(让编码一致,乱码消失)
本实验环境为:Windows XP SP3与RHEL5,对其它系统来说差别不大。
一条重要的原则:只要客户端软件与服务器端设置为一致的中文编码,就不会有乱码。
在此我将两端编码均设置为“zh_CN.UTF-8”
在设置之前查看Linux中的当前字符编码:
[root@www3 ~]# echo $LANG
en_US.UTF-8 #显然不是“zh_CN.UTF-8”
更改Linux系统字符编码:
有三种方式可以实现:
1.修改/etc/sysconfig/i18n
将其中的LANG="en_US.UTF-8"行修改为:LANG="zh_CN.UTF-8"
# source /etc/sysconfig/i18n #使设置生效
此种方法可以使设置全局生效
2.修改/etc/porfile
# echo 'export LANG="zh_CN.UTF-8"'>>/etc/profile
# source /etc/profile
此种方法亦可使设置全局生效
3.修改~/.bashrc
更改客户端软件编码:
PuTTy编码设置:
SecureCRT编码设置:
虽然SecureCRT有字符编码设置,本人设置后发现乱码问题没有解决。此软件解决乱码的方法是本软件的设置不做更改,将Linux系统的编码改为"ZH_CN.GB18030"即可,更改方法参考“更改Linux系统字符编码”部分内容。SecureCRT中是看不到中文的。
效果:
乱码:
汉字:
【全文完】