场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码。

1. 发送请求,从浏览器中捕获到http的请求内容如下:

1 Remote Address:[::1]:8080
2 Request URL:http://localhost:8080/fax/downloadFax?fname=%e6%8e%88%e6%9d%832.png
3 Request Method:GET
4 Status Code:201 Created

2. 第一时间认为是URL编解码的问题,所以学习了一下相关的转换方法:

1 //将utf-8格式的中文转换成URL编码
2 encodeStr = URLEncoder.encode(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 String(fName.getBytes("iso-8859-1"),"utf-8");

由于上述原因,在构造HTTP响应消息时,需要把中文字符再转成iso-8859-1。

6.还有一种办法,就是配置Tomcat:

在Tomcat的conf目录下的server.xml中配置Connector的URIEconding=“UTF-8"属性即可,没有这个参数可以手动加上。

转载于:https://www.cnblogs.com/yoyotl/p/5390876.html

关于HTTP GET请求的url中文参数编码相关推荐

  1. 框架页,URL中文参数乱码

    在web.config这样声明编码   <globalization requestEncoding="utf-8"  responseEncoding="utf- ...

  2. encodeURI之URL中文参数问题

    ******************************************************************** *                               ...

  3. java中文 x_java环境url中文参数乱码处理

    在做搜索开发过程中,由于翻页功能需要,要把当前查询的中文条件放在URL中带到服务器进行下一页查询,结果出现乱码情况. 此时情况有如下两种: 1.在输入框输入搜索内容,直接通过from提交,参数值正常读 ...

  4. iOS开发网络篇 一一 请求路径(URL)中文转码问题

    当发送网络请求: 确定请求路径URL 时, 观察url中是否包含中文, 如果包含中文 需要将url中的中文进行转码操作. 注意: 上面这种情况 只针对于发送GET请求,因为GET请求的URL 包含用户 ...

  5. post请求或get请求通过url传递参数

    1. 实例 package com.gxn.demo.controller;import com.gxn.demo.domain.Student; import com.gxn.demo.domain ...

  6. 在SSH框架中,如何得到POST请求的URL和参数列表

    在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息. 最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到po ...

  7. javascript 请求action传递中文参数乱码问题

    1.js $.ajaxFileUpload         (             {                 url:'<%=basePath%>uploadDatFile/ ...

  8. vue 给url 中文参数 添加编码解码

    // 解码用 decodeURIComponent(str) // 编码用 encodeURIComponent(str) 转载于:https://www.cnblogs.com/dudu123/p/ ...

  9. java 转换url中文参数

    当使用request对象获取用户提交的汉字字符时,会出现乱码问题,所以对含有汉子字符的信息必须进行特殊的处理. 首先,将获取的字符串用IOS-8859-1进行编码,并将编码存放到一个字节数组中,然后再 ...

最新文章

  1. 【机器学习入门】(4) 决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择
  2. 跳跃游戏Python解法
  3. 内存数据库到底有多快?
  4. 表示和描述-边界追踪
  5. Python3 爬虫学习笔记 C10【数据储存系列 — MySQL】
  6. mongodb最详细的安装与配置
  7. 都说开完电动汽车,就不想再开回燃油车了,是这样吗?
  8. 1078. Bigram 分词
  9. 每当Xcode升级之后,都会导致原有的Xcode插件不能使用,解决办法
  10. 【转】android新建项目时 出现appcompat_v7工程错误和红色感叹号
  11. 不用编程,快速实现西门子PLC与罗克韦尔(AB)PLC之间以太网通讯
  12. word排版技巧:如何撤销删除自动编号
  13. STM32个人笔记--GPIO框图
  14. 2022电大国家开放大学网上形考任务-科学与技术非免费(非答案)
  15. ArcGISPro通视分析之视线分析
  16. 关于JavaScript面向对象
  17. 天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案
  18. DayDayUp:2021,再见了,无论是躺平还是内卷—愿大家改变不可接受的,接受不可改变的—心若有向往,何惧道阻且长
  19. 苹果xr十大隐藏功能_网上找的一些非常实用的苹果笔记本使用技巧及隐藏功能,收藏了...
  20. python获取邮件并转为pdf

热门文章

  1. WIN server 2003 下无法安装adobe cs3 终极解决方法。
  2. Ubuntu虚拟机JeOS安装-2016.08.28
  3. SQL中truncate table和delete的区别
  4. Android自定义View探索—生命周期
  5. ExcelReport第三篇:扩展元素格式化器
  6. SkipList 跳跃表
  7. 一致代码段与非一致代码段
  8. Django POST请求错误
  9. JavaScript 调试建议和技巧
  10. 查询在一张表不在另外一张表的记录