在线url网址编码解码javahttpget编码_关于HTTPGET请求的url中⽂参数编码场景:前端⽤JS构造了⼀个GET请求,携带了⼀个中⽂的参数,通过Spring MVC传到后台以后解析中⽂是乱码。
1. 发送请求,从浏览器中捕获到http的请求内容如下:
1 Remote Address:[::1]:8080
3 Request Method:GET
4 Status Code:201 Created
2. 第⼀时间认为是URL编解码的问题,所以学习了⼀下相关的转换⽅法:
1 //将utf-8格式的中⽂转换成URL编码
2 encodeStr = de(fname, "utf-8");
3 //将URL编码的字符串转换成utf-8格式的中⽂
4 decodeFName = URLDecoder.decode(encodeStr, "utf-8");
测试结果,没有达到预期,再仔细看看,笑了,上⾯不是做了⼀次A->B->A的⽆效转码吗?!
3.乱码是怎么回事呢?
我的页⾯设置的utf-8格式,我的Spring MVC框架的编码filter也配置了utf-8,现在的乱码是怎么回事呢?
4. 原因到了:
Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了⼀次URLDecode。
Tomcat对GET⽅式默认的URL解码结果是iso-8859-1⽽不是UTF-8!
5. 解决办法:
decodeFName = new Bytes("iso-8859-1"),"utf-8");
由于上述原因,在构造HTTP响应消息时,需要把中⽂字符再转成iso-8859-1。
6.还有⼀种办法,就是配置Tomcat:
在Tomcat的conf⽬录下的l中配置Connector的URIEconding=“UTF-8"属性即可,没有这个参
数可以⼿动加上。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论