【SpringMVC】三.如何解决get和post乱码

本文介绍了在SpringMVC中如何处理GET和POST请求时出现的乱码问题。对于GET请求,可以通过设置request的编码或者修改Tomcat配置文件来解决。POST请求的乱码可以通过在web.xml中添加过滤器来解决。解决方案包括设置request.setCharacterEncoding()和修改Tomcat的URIEncoding属性。
摘要由CSDN通过智能技术生成

三.如何解决get和post乱码

Get

原因:

对于GET方式,我们知道它的提交是将请求数据附加到URL后面作为参数,这样依赖乱码就会很容易出现,因为数据name和value很有可能就是传递的为非ASCII码。

当URL拼接后,浏览器对其进行encode,然后发送到服务器。具体规则见URL编码规则。

tomcat服务器在进行解码过程中URIEncoding就起到作用了。tomcat服务器会根据设置的URIEncoding来进行解码,如果没有设置则会使用默认的ISO-8859-1来解码。假如我们在页面将编码设置为UTF-8,而URIEncoding设置的不是或者没有设置,那么服务器进行解码时就会产生乱码。

这个时候我们一般可以通过new String(request.getParameter(“name”).getBytes(“iso-8859-1”),“utf-8”) 的形式来获取正确数据,或者通过更改服务器的编码方式: tomcat 设置中<Connector port="8080"protocol=“HTTP/1.1” maxThreads=“150” connectionTimeout="20000"redirectPort="8443"URIEncoding=“客户端编码”/> (默认是iso-8859-1)。

服务器获取的数据都是ASCII范围内的请求头字符,其中请求URL里面带有参数数据,如果是中文或特殊字符,那么encode后的%XY(编码规则中的十六进制数)通过request.setCharacterEncoding()是不管用的。这时候我们就能发现出现乱码的根本原因就是客户端一般是通过用UTF-8或GBK等对数据进行encode的,到了服务器却用iso-8859-1方式decoder(解码)。

(1).通过直接使用request设置

需要提前引入依赖

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值