springMVC中文乱码

情况:

  1. eclipse编码全部设置了UTF-8格式。
  2. 使用form表单,post方法
  3. springMVC框架,JavaBean传值

问题:后台取值中文乱码

解决:

  1. 最开始只注意到控制台中文乱码,在eclipse中设置utf-8编码格式不起作用;包括window->Preferences 和 run as 中Arguments 添加 -Dfile.encoding=UTF-8,修改了tomcat的server.xml文件,加入URIEncoding=“UTF-8”配置
  2. 然后debug发现后台获取的值是乱码,在业务逻辑层加入了设置,不起作用;
1 request.setCharacterEncoding("utf-8");
2 response.setContentType("text/html;charset=utf-8");

   3. 然后发现JavaBean获取到的就是乱码,在web.xml配置文件加入了过滤器设置编码格式;(这是针对post请求)

 1   <filter>
 2         <filter-name>encoding</filter-name>
 3         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 4         <!-- 设置编码参是UTF8 -->
 5         <init-param>
 6             <param-name>encoding</param-name>
 7             <param-value>UTF-8</param-value>
 8         </init-param>
 9     </filter>
10     <filter-mapping>
11         <filter-name>encoding</filter-name>
12         <url-pattern>/*</url-pattern>
13     </filter-mapping>

针对get请求乱码情况,查阅得知两种解决办法:

  • 设置tomcat的server.xml文件,加入标红配置
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  • 对参数进行重新编码:

String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8");

posted @ 2019-07-30 10:20  Johnny-miao  阅读(117)  评论(0编辑  收藏  举报