今日将工程部署到新的服务器,进行开发测试时,突然发现一个功能在之前的服务器测试没有问题,但是在新服务器测试却查询不到数据,于是进行debug断点测试,发现是由于后台接收到的前端页面传输的数据有乱码所致,而这个问题在原来的服务器是不存在的,于是开始从工程的编码格式找原因。由于工程框架是spring mvc +mybatis ,在web.xml配置文件中已经进行了编码格式的配置,如下:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
因为在新旧服务器上这个文件是没有变化的,所以这是没有问题的。于是就寻思是tomcat的配置所致,
查找到tomcat配置文件,并设置URL编码集(URIEncoding),如下:
在tomcat的server.xml配置文件中,找到
Connector 节点,并添加 URIEncoding="UTF-8" 即可。