在linux环境下操作,经常遇到中文乱码的情况,下面整理下自己遇到问题的解决思路:
出现位置:tomcat日志;
出现效果:中文显示问号:
解决思路:
1、输入echo $LANG打印当前使用的系统语言,或输入locale直接查看全部:
LANG=en_US.UTF-8 // LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。
LC_CTYPE="en_US.UTF-8" //用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量
LC_NUMERIC="en_US.UTF-8" // 非货币的数字显示格式
LC_TIME="en_US.UTF-8" // 时间和日期格式
LC_COLLATE="en_US.UTF-8" //环境的排序和比较规则
LC_MONETARY="en_US.UTF-8" // 货币格式
LC_MESSAGES="en_US.UTF-8" //提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
LC_PAPER="en_US.UTF-8" //默认纸张尺寸大小
LC_NAME="en_US.UTF-8" //姓名书写方式
LC_ADDRESS="en_US.UTF-8" //地址书写方式
LC_TELEPHONE="en_US.UTF-8" //电话号码书写方式
LC_MEASUREMENT="en_US.UTF-8" //度量衡表达方式
LC_IDENTIFICATION="en_US.UTF-8" //对locale自身包含信息的概述
LC_ALL= //它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。
如果没有需要安装,需要下载安装。
(1)、安装所有与中文支持相关的包
# yum -y groupinstall chinese-support
(2)、修改字符编码配置文件
# vi /etc/sysconfig/i18n
修改后内容如下:
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
SYSFONT="latarcyrheb-sun16"
区分en_US.UTF-8与zh_US.UTF-8,分别默认显示为英文和中文模式。
2、排除系统语言后,查看终端的设置:
例如xshell,属性>终端>编码一项,是否设置为Uncod(UTF-8)
3、上述都没有问题后,考虑tomcat自身的设置:
在tomcat>bin>catalina.sh(window环境查看catalina.bat)文件中,echo "Using CATALINA_BASE: $CATALINA_BASE"前面加上:
JAVA_OPTS="$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8"
重新启动tomcat,再观察日志的中文显示情况
4、上述都操作过后还是存在中文问题,那么就要考虑项目本身,例如:
(1)数据库的编码;
(2)打包前请检查文件的编码;
上述操作没有顺序,可根据猜测去试图查看。操作中,比较支持在同一步骤相同环境下多个项目或服务器比对的方式,找到问题的速度会更快...