问题:web项目在jsp页面配置了pageEncoding=“utf-8”,servlet中配置了一个编码filter
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test/my.do" >
姓名:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
web.xml:
<!-- 编码统一的过滤入口 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 更改编码为utf-8 ,其实就是更改CharacterEncodingFilter中的属性值-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 编码统一的过滤入口 -->
点击提交后,后台和前端显示的结果:
后台:
è?????
123
前端:
welcome to doFrist
还好
123
很显然中文名字已经乱码了,而且还是在后台接收的时候就已经乱码了,说明是request中的
request.setCharacterEncoding编码有问题,查看了下项目的编码
编码是对的,filter中的编码也是utf-8,结果还是乱码,百度了下,说是tomcat中service.xml中要配置一个参数,具体配置
<Connector port="7086" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true" />
果然,重启Tomcat后乱码问题解决了
welcome to doFrist
还好
123
解决乱码参考的博客:
http://blog.csdn.net/seng3018/article/details/6773376