IDEA使用Tomcat服务器出现乱码问题排查过程
做一个积极的人
编码、改bug、提升自己
我有一个乐园,面向编程,春暖花开!
最近刚使用IDEA,在开发一个功能的时候,开始使用Jetty作为容器进行web项目开发,测试通过。然后想了一下线上服务器使用的容器是Tomcat,还是用Tomcat跑一下项目在测试一下,本地和服务器使用相同的容器,这个可以避免因为容器不同而导致本地测试通过,而上线又出现莫名的错误~! 就在我从Jetty切换到Tomcat,就发生了问题,访问JSP页面使用response输出,出现了乱码!!!
就是下面这些东东:(这是什么啊!萌币中。。。。。)
����⣺ ����⣺ ����⣺ ����⣺ ����⣺ ����⣺ ����⣺
这很是郁闷,本想着一次性测试通过,没想到这里又让我停留! 看到乱码,心里不要害怕,不要紧张!冷静下来进行分析,看哪里出现问题!
开始思考:
0:数据库(mysql)---utf-8
show variables like 'character%'
character_set_client utf8character_set_connection utf8character_set_database utf8character_set_filesystem binarycharacter_set_results utf8character_set_server utf8character_set_system utf8character_sets_dir /aebiz/soft/mysql/share/charsets/
1:Tomcat---utf-8
2:jsp --- utf-8
3:web.xml---utf-8
CharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8CharacterEncodingFilter/*
4:request和response
request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");
5:java代码字符串编码
str = tmpWriter.getByteArrayOutputStream().toString("utf-8");
全部都检查过之后,发现全部是utf-8。大写的一个懵字,全部是utf-8怎么还是会有乱码出现呢?
好忧伤,难道是还有什么地方没有设置吗,我一想,是不是IDEA结合Tomcat编码设置有问题导致的呢?按照这个思路发现奇迹就在前面!
在配置Tomcat的时候添加一些参数。如下(开始是没有设置-Dfile.encoding=UTF-8)
-server-Xms1024m-Xmx2048m-XX:PermSize=512m-XX:MaxPermSize=512m-XX:+CMSClassUnloadingEnabled-XX:+PrintGCDetails-Xloggc:%M2_HOME%/gc.log-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=%M2_HOME%/java_pid.hproyuan
用搜索引擎发现下面博文:Eclipse、IDEA环境下设置jvm默认编码
于是添加VM参数添加
-Dfile.encoding=UTF-8
配置参数就是
-server-Xms1024m-Xmx2048m-XX:PermSize=512m-XX:MaxPermSize=512m-XX:+CMSClassUnloadingEnabled-XX:+PrintGCDetails-Xloggc:%M2_HOME%/gc.log-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=%M2_HOME%/java_pid.hproyuan-Dfile.encoding=UTF-8
启动发现页面乱码不见了,可是控制台有出现了乱码,乱码真是 生生不息 啊!
于是配置idea安装目录下的bin文件夹,idea.exe.vmoptions文件中
添加一条配置信息:-Dfile.encoding=UTF-8
so,一切都解决了!完美!