最近在做项目自测的时候发现,每次输入查询条件为中文时,后端Controller层中请求的的VO中都是乱码,第一次遇到没有头绪,于是开始了各种排除法
一、在jsp中,页面的编码很明确:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>二、在Controller层,打印出默认的编码格式,也是UTF-8,打印方式:
System.out.println(request.getCharacterEncoding());三、查看IDE编码方式,毫无疑问都是UTF-8。
这我就奇了怪了,所有编码方式都一致,怎么可能还会有错,思前想后,从页面表单中提交的数据在Java程序里显示乱码,还有一种可能就是Tomcat的编码没有设置,tomcat的默认编码是iso8859-1,而程序的默认编码为UTF-8,这里出现了冲突,所以修改tomcat下的conf/server.xml文件。
找到如下代码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
这段代码规定了Tomcat监听HTTP请求的端口号等信息。
修改为如下情况
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
就可以啦!