post解决方法:
在web.xml中配置如下参数,由于在javaweb中执行顺序是listen——>filter——>servlet,在将请求传递给springmvc的前端控制器的时候,filter会先处理,其中下面的处理就是处理请求过来post的参数的乱码问题。
<filter>
<filter-name>CharacterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Servlet中:
//设置服务器输出的编码为UTF-8
response.setCharacterEncoding("UTF-8");
//告诉浏览器输出的内容是html,并且以utf-8的编码来查看这个内容。
response.setContentType("text/html; charset=utf-8");
---------------------
get乱码解决方法:
修改tomcat中的conf下的server.xml的配置文件,其中添加URIEncoding="utf-8"(推荐)
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="utf-8"/>
或者在代码中使用转码的方式(不推荐)
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")