问题描述
之前使用IDEA创建javaWeb项目使用Tomcat运行中文并没有出现乱码,但是使用Maven创建javaWeb项目后,使用Tomcat运行出现以下几种情况:
- 使用Tomcat部署并运行项目后,输出语句中文乱码。,例如:
System.out.println("--------张三-----");
- 从前端页面接收中文数据输出中文乱码
使用过的处理办法
- 使用过滤器通过设置HttpServletRequest和HttpServletResponse的编码并没有效果:
httpServletRequest.setCharacterEncoding("utf-8");
httpServletResponse.setCharacterEncoding("utf-8");
//浏览器会将当前页面按照html进行解析,并且解析编码为utf-8
httpServletResponse.setContentType("text/html;charset=utf-8");
但是通过测试HttpServletRequest和HttpServletResponse的编码确实设置成功了。
2. 设置Tomcat的conf/logging.properties文件的字符编码也不行。
3. 修改IDEA的配置文件,在下面两个配置文件末尾加-Defile.encoding=utf-8,也不行:
4. VM-options中加-Defile.encoding=utf-8,也不行。
5. 修改IDEA的各种File Encoding都改为UTF-8。
解决办法
首先,确定IDEA的各种File Encoding都设置为utf-8,然后通过通过上面的第一种方法知道,数据传输过来的字符编码格式确实是UTF-8,那么就只有两种可能,一种是IDEA的字符编码解析的问题,一种是Tomcat的的字符编码问题。两者的版本或许存在冲突。
通过上面的第三种解决方法是设置IDEA的配置文件,并在两个文件的末尾加上了-Defile.encoding=utf-8;但是我的解决方法确实是和这两个配置文件有关:在IDEA中打开Help/Edit Custom VM Options,这时打开的文件是idea64.exe.vmoptions
但是如果你没有修改应该没有后面的-Dfile.encoding=utf-8语句。也就是我们修改的IDEA两个配置文件并没有在Maven项目中配置成功。
进行到这,重启IDEA应该就可以了。
总结
个人感觉是Maven版本和Tomcat版本有所冲突,欢迎你们将自己的解决方法留言共享给大家。
借鉴链接