[置顶] 记一次中文乱码解决过程

先说一下现象:浏览器显示中文是乱码!

为什么会显示乱码呢?

首先:乱码页面对应的是一个html文件,并且html文件也是用的utf-8格式的编码,并且文件内容显示正常,无中文乱码问题;

其次:通过如下操作修改浏览器编码,无论如何始终都是乱码




排除了B(browser)端问题,那就应该是S(server)端的问题了,接下来就通过SSH Secure Shell Client工具登录上linux服务器,找到应用的部署目录,并找到对应的那个html文件,使用vi打开一开,是乱码,找到问题了,文件本身就是乱码,浏览器上显示乱码就不奇怪了。接下来开始解决问题,索性,我就把本地的显示正常的文件通过SSH Secure File Transfer Client工具上传到服务器上并覆盖掉原来的html文件,打开浏览器,重新登录,查看,居然还是乱码!

赶快打开服务器上的html文件,发现跟原来一样:中文全部显示乱码!难道没有替换成功?重新刚才的替换操作,同时使用ll命令查看html文件详细信息,最后修改时间跟当前时间完全一致,确定是被我本地的文件替换过了,结果打开浏览器,一样是乱码,再到服务器上查看html还是乱码!


思考:应该是操作系统环境的问题,操作系统应该不支持中文。带着这个怀疑查看了操作系统的相关信息,结果如下:

# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.5 (Santiago)
Release:        6.5
Codename:       Santiago

#vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"


查看默认显示的字符编码,发现:
# echo $LANG
en_US.UTF-8


找到问题了!修改/etc/sysconfig/i18n文件内容为:

# vi  /etc/sysconfig/i18n
#LANG="en_US.UTF-8"
#SYSFONT="latarcyrheb-sun16"
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="lat0-sun16"


再次进行操作:

# echo $LANG
zh_CN.GB18030

重新把本地的文件上传到服务器上替换掉原来的老文件,vi打开,中文显示正常,打开浏览器,查看,乱码问题解决!

这里有个很小的插曲:修改完如上配置后,我用vi打开那个文件时,中文是正常的,但是用cat查看却仍然是乱码!解决方案很简单,即修改客户端工具SSH Secure Shell Client编码即可,如下图所示:




原因是:cat是根据客户端工具的编码来显示内容的,而vi是根据服务器的编码来显示内容的!


结论:其实操作系统是支持中文的,只是配置不当导致无法显示中文!将系统语言改为:LANG=zh_CN.UTF-8也可以!

要查看系统支持的语言,可以使用如下命令查看:locale -a。

如果以后发现其他中文乱码问题,可以如法炮制即可!

posted @ 2016-04-28 14:10  crazy_itman  阅读(109)  评论(0编辑  收藏  举报