一、查看系统语言
echo $LANG 显示zh_CN.UTF-8说明系统支持中文编码
二、查看系统是否有中文包
locale
三、Tomcat乱码解决
假设编码用utf-8
1、tomcat日志乱码
设置系统编码,先设置系统编码vi /etc/sysconfig/i18n,默认为:
LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
修改为:
LANG="zh_CN.UTF-8" SUPPORTED="zh_CN.UTF-8:zh_CN:zh" SYSFONT="latarcyrheb-sun16"
运行source /etc/sysconfig/i18n保存设置
2、设置jvm编码
1) 从tomcat的bin目录的sh启动tomcat
在catalina.sh找到JAVA_OPTS配置为JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
注:这个参数必须在jvm启动时加上,在程序中通过设置system property的方式是没有效果的,原因是jvm启动时读取file.encoding并cache,后续只使用启动时读取的编码。 后续:
我之前直接在catalina.sh的最上方添加了JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"配置
但是发现配置并不生效 日志仍为乱码
原来catalina.sh中间位置有个这样的配置JAVA_OPTS=
他又把JAVA_OPTS给置空了 怪不得配置不生效
解决方法有两种
在JAVA_OPTS=后面直接添加编码配置
在下一行添加 JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
推荐后面这一种 不修改原配置 添加新配置才更合理
2) 从服务中启动tomcat
如果tomcat已配置为服务 则要修改修改/etc/rc.d/init.d目录下对应的文件,假如服务为tomcat 就修改tomcat文件 修改方式同上。
3、tomcat参数的乱码问题
在server.xml的connector中增URIEncoding="utf-8"
4、数据库乱码
url: jdbc:mysql://IP:3306/XX?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true