java - 在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码。

查看:185
本文介绍了java - 在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码。
我的web.xml 配置

<filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <async-supported>true</async-supported>
        <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>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

然后我使用了两种方式去请求接口GET和post
第一种情况:
用get方式提交接口,然后在SpringMVC中方法接收参数是用注解@RequestParam String name
然后用该方式接收的值就是乱码,乱码的结构是&aaa;&ddd;这种的,然后我用java转码去转也不能成功
第二种情况:
用get方式提交接口,然后在SpringMVC中方法接收参数是用注解@RequestParam String name
然后用该方式接收的值也是乱码,乱码的结构是&aaa;&ddd;然后我用java转码去转也不能成功
第二种情况:
用get方式提交接口,然后在SpringMVC中方法接收参数是用HttpServletRequest request 方法接收
request.getParamter('name'),也是乱码,乱码的方式是?????全是问号,然后我用转码一下

    System.out.println("keyword" + new String(keyword.getBytes("iso-8859-1"),"utf-8"));

就会变成中文。然后再用post方式用该方法也能够得到正确的中文。

解决方案

CharacterEncodingFilterURI 参数无效。

<Connector port="8080" protocol="HTTP/1.1"   
           connectionTimeout="20000"   
           redirectPort="8443" URIEncoding="UTF-8" />  

在Tomcat中可以设置URIEncoding参数指定URI的编码。

这篇关于java - 在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆