在linux环境下操做,常常遇到中文乱码的状况,下面整理下本身遇到问题的解决思路:java
出现位置:tomcat日志;linux
出现效果:中文显示问号:shell
解决思路:数据库
一、输入echo $LANG打印当前使用的系统语言,或输入locale直接查看所有:tomcat
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,分别默认显示为英文和中文模式。
二、排除系统语言后,查看终端的设置:
例如xshell,属性>终端>编码一项,是否设置为Uncod(UTF-8)
三、上述都没有问题后,考虑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,再观察日志的中文显示状况
四、上述都操做事后仍是存在中文问题,那么就要考虑项目自己,例如:
(1)数据库的编码;
(2)打包前请检查文件的编码;
上述操做没有顺序,可根据猜想去试图查看。操做中,比较支持在同一步骤相同环境下多个项目或服务器比对的方式,找到问题的速度会更快...