关于HTTP GET请求的url中文参数编码
场景:前端用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中文参数编码相关推荐
- 框架页,URL中文参数乱码
在web.config这样声明编码 <globalization requestEncoding="utf-8" responseEncoding="utf- ...
- encodeURI之URL中文参数问题
******************************************************************** * ...
- java中文 x_java环境url中文参数乱码处理
在做搜索开发过程中,由于翻页功能需要,要把当前查询的中文条件放在URL中带到服务器进行下一页查询,结果出现乱码情况. 此时情况有如下两种: 1.在输入框输入搜索内容,直接通过from提交,参数值正常读 ...
- iOS开发网络篇 一一 请求路径(URL)中文转码问题
当发送网络请求: 确定请求路径URL 时, 观察url中是否包含中文, 如果包含中文 需要将url中的中文进行转码操作. 注意: 上面这种情况 只针对于发送GET请求,因为GET请求的URL 包含用户 ...
- post请求或get请求通过url传递参数
1. 实例 package com.gxn.demo.controller;import com.gxn.demo.domain.Student; import com.gxn.demo.domain ...
- 在SSH框架中,如何得到POST请求的URL和参数列表
在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息. 最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到po ...
- javascript 请求action传递中文参数乱码问题
1.js $.ajaxFileUpload ( { url:'<%=basePath%>uploadDatFile/ ...
- vue 给url 中文参数 添加编码解码
// 解码用 decodeURIComponent(str) // 编码用 encodeURIComponent(str) 转载于:https://www.cnblogs.com/dudu123/p/ ...
- java 转换url中文参数
当使用request对象获取用户提交的汉字字符时,会出现乱码问题,所以对含有汉子字符的信息必须进行特殊的处理. 首先,将获取的字符串用IOS-8859-1进行编码,并将编码存放到一个字节数组中,然后再 ...
最新文章
- 【机器学习入门】(4) 决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择
- 跳跃游戏Python解法
- 内存数据库到底有多快?
- 表示和描述-边界追踪
- Python3 爬虫学习笔记 C10【数据储存系列 — MySQL】
- mongodb最详细的安装与配置
- 都说开完电动汽车,就不想再开回燃油车了,是这样吗?
- 1078. Bigram 分词
- 每当Xcode升级之后,都会导致原有的Xcode插件不能使用,解决办法
- 【转】android新建项目时 出现appcompat_v7工程错误和红色感叹号
- 不用编程,快速实现西门子PLC与罗克韦尔(AB)PLC之间以太网通讯
- word排版技巧:如何撤销删除自动编号
- STM32个人笔记--GPIO框图
- 2022电大国家开放大学网上形考任务-科学与技术非免费(非答案)
- ArcGISPro通视分析之视线分析
- 关于JavaScript面向对象
- 天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案
- DayDayUp:2021,再见了,无论是躺平还是内卷—愿大家改变不可接受的,接受不可改变的—心若有向往,何惧道阻且长
- 苹果xr十大隐藏功能_网上找的一些非常实用的苹果笔记本使用技巧及隐藏功能,收藏了...
- python获取邮件并转为pdf