最近有个项目用tomcat部署在Linux系统上正好遇到乱码问题,绕了几个小时,看了各种帖子,顺便总结个经验,把windows使用tomcat的乱码处理情况也写一下,提供参考。
一、控制台tomcat乱码:
控制台输出字符集设置,修改tomcat目录下conf中的logging.properties文件,下图中改最后一个uft-8或是全部的utf-8都可以试一试。
部署在windows的服务器上,这个而地方就配置为GBK,如果是linux的,就要配置为UTF-8。
java.util.logging.ConsoleHandler.encoding = UTF-8
改为
java.util.logging.ConsoleHandler.encoding = GBK
二、页面乱码
页面乱码场景就太多了,首页页签标题乱码类型、数据库相关数据乱码类型等等,一般处理方式都是修改解码方式和请求字符集设置。
1.找到Tomcat的conf下的server.xml,在Connector标签中添加字符集设置:URIEncoding=“UTF-8”
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
2.找到Tomcat的bin目录,在catalina.bat文件中加入以下语句:一般加在最上方@echo off的下面
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"
LINUX系统环境乱码问题记录
记录:项目部署后首页乱码,而登录系统往后,显示一切正常。
尝试解决方式:1.修改了centos7的默认语言环境:设置为中文utf-8 (无效)
具体操作可百度
LANG="zh_CN.UTF-8"
2.找到Tomcat的bin目录下的catalina.sh文件中加入:JAVA_OPTS=“$JAVA_OPTS -Dfile.encoding=UTF-8” (无效)
公司大佬把问题定位到了解码字符集,然后修改了catalina.sh中设置的字符集:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=GBK"
首页乱码解决!!!
3.定位具体原因,经过各种尝试及测试,尝试中-在把首页html单独拿出来修改标签设置字符集之类的:
<meta content="text/html" charset="UTF-8" > 或是<meta content="text/html" charset="gbk" >
因为定位到了是解码问题,那么就考虑到了编码,最终找到原因是首页html打包编译时是gbk字符格式,所以在修改catalina.sh文件时把字符集改为gbk后,显示正常;经后续测试,将首页html转为utf-8后,删除catalina.sh中的字符集设置,显示也正常。大概推测tomcat是默认utf-8解码,但是由于前面修改过centos的语言环境,没再去深究是否是设置了中文utf-8做了铺垫。