关于HTTP GET请求的url中文参数编码
来源:互联网 发布:股票分析算法 编辑:程序博客网 时间:2024/06/06 00:07
场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码。1. 发送请求,从浏览器中捕获到http的请求内容如下:
1 Remote Address:[::1]:80802 Request URL:http://localhost:8080/fax/downloadFax?fname=%e6%8e%88%e6%9d%832.png3 Request Method:GET4 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"属性即可,没有这个参数可以手动加上。
阅读全文
0 0
- 关于HTTP GET请求的url中文参数编码
- 关于HTTP GET请求的url中文参数编码
- HTTP中URL的get请求,中文参数乱码
- 关于javascript编码url的中文参数
- 关于php的url中文参数编码
- 如何解决get请求URL地址的中文参数问题
- 关于http请求中get\post请求参数的限制
- 关于 HTTP GET/POST 请求参数长度最大值的问题
- 关于 HTTP GET/POST 请求参数长度最大值的问题
- 解决android http请求带中文参数会乱码(url编码)
- Spring Tomcat Post Get 请求参数有中文时出现乱码或+号变空格等关于编码的问题
- 关于URL请求传递中文参数乱码
- 对get请求的URL 参数排序
- java实现:http协议get和post方法的url参数请求响应及交互
- URL加(中文)参数传值的get请求会出现乱码
- Android 发送get请求 URL中文参数显示问号的一种解决办法
- HTTP的GET请求中文乱码
- get请求中文乱码问题解决和参数编码
- java-未捕获异常的处理
- 根据类(不能被继承、只能在栈上/堆上创建对象)的特点设计一个类
- 【二分+2-SAT+Tarjan】POJ2723 Get Luffy Out
- Linux 帮助命令
- Codevs 3305 水果姐逛水果街Ⅱ
- 关于HTTP GET请求的url中文参数编码
- 动态内存开辟
- PostgreSQL学习手册
- git 撤销操作--git checkout、git reset、git revert、git commit -- amend
- Springmvc注解@RequestMapping(七)
- 手势密码
- cshell脚本抓取文件
- 30day框架搭建小结
- pojo 实现序列化 implements Serializable