HTTP的GET请求中文乱码

今日写完Controller的代码后,自测发现,参数若是中文,接收到的值为乱码。
最初以为是Spring容器的问题,百度后基本有以下几种解决方法:
1.web.xml中配置 CharacterEncodingFilter
2.把接收的参数转码 name = new String("name".getBytes("ISO-8859-1"), "UTF-8");
3.在<\mvc:annotation-driven/>中添加

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true"> 
        <!-- StringHttpMessageConverter编码为UTF-8,防止乱码 --> 
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
            <constructor-arg value="UTF-8"/> 
        </bean> 
    </mvc:message-converters> 
<mvc:argument-resolvers> 

4.在RequestMapping中添加produces属性

@RequestMapping(value="one", method=RequestMethod.GET, produces="text/html;charset=utf-8")

实际测试发现,只有第二种有效,说明当前项目配置是没问题的。然后想到可能是容器的问题,查看ng配置后发现为UTF-8编码。于是查看tomcat配置,发现tomcat未设置编码,即使用默认的ISO-8859-1编码,改为UTF-8后,问题解决。

<Connector port="8019" protocol="HTTP/1.1" connectionTimeout="20000" 
    redirectPort="8443" URIEncoding="UTF-8"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值