一般在apache官方网站下载的,默认情况下不会出现字符集编码是乱码的情况,出现这种情况的原因有两种:一种是检查环境,一种是代码编码问题。可以从这两面排查。
开发打字符集,查看编码问题,同时运维排查从前端到后端所有的字符集情况。
开发检查开发环境编码的配置,检查读取配置文件的程序,运维检查系统及tomcat及mysql等的字符集。
有时候是开发问题,有时候是环境问题,需要开发配合一点点排查。
最近笔者遇到了非uri乱码,而是页面中部分中文乱码问题。
在这里非常感谢我们开发的配合帮助排查
tomcat启动时,需要指定虚拟机文件编码一定要和系统环境保持一致,否则会出乱码问题
作如下设置:-Dfile.encoding=UTF-8,更改tomcat启动脚本catalina.sh,加入如下内容
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8 -server -Xms1024m -Xmx1536m -XX:PermSize=256m -XX:MaxPermSize=512m "
官方中给出的解释是默认字符集是在java虚拟机启动时决定的,这个依赖于java虚拟机所在的操作系统的区域及字符集。代码中可以看到,默认字符集就是从file.encoding这个属性中获取的。
对 -Dfile.encoding=UTF-8 来说就是设置系统属性 file.encoding 为 UTF-8 ,即jvm虚拟机中的系统属性更改为UTF-8.
如果是url乱码:
设置tomcat的配置文件server.xml

<Connector
 port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
 redirectPort="8443" URIEncoding="UTF-8"
 />

参考文章:
https://blog.csdn.net/telnetor/article/details/5555361