我理解的SpringMVC之乱码问题

一、为什么会有乱码问题

新建一个项目,在未做编码配置时,会出现乱码情况,即页面输入中文,后台接收到乱码,或者后台传的中文,页面乱码的情况。
会出现这样的问题,是因为浏览器和我们的java的编码不一样造成的。

情况一:页面输入中文,服务器端乱码。

表单提交时,浏览器会对中文进行编码,此时使用的是打开表单所在页面的字符集进行编码,一般为"UTF-8",而服务器默认使用的是"ISO-8859-1"来解码,所有就产生了乱码。

情况二:服务器传的中文,页面乱码。

服务器端默认是“ISO-8859-1”编码,程序员可能会修改。
页面新建时默认是"ISO-8859-1"解码,一般也会修改。
如果有两边不一致,就出现乱码情况。

二、如何解决

情况一

GET方式

在tomcat的 server.xml 配置中添加URIEncoding=“UTF-8”,代码如下:

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

POST方式

以前我们的解决方式是,在服务器端将request的字符集修改为前端发送的字符,如UTF-8.

request.setCharacterEncoding("UTF-8");

但是,这种方式在单个方式时还不错,但是如果需要在所有的方法里加这句话,就会非常不好。因此,我们可以通过写一个过滤器的方式。而且,该过滤器还不需要我们去写,SpringMVC 提供了一个过滤器CharacterEncodingFilter,在web.xml中配置一下即可。

	<filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

情况二

统一修改为“UTF-8”.

总结

限制Tomcat8.5之后,已经不需要配置GET的方式,Tomcat自动帮我们解决了,我们只需要配置一个全局的filter,针对POST方式的乱码就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值