关于HTTP GET请求的url中文参数编码
场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码。
1. 发送请求,从浏览器中捕获到http的请求内容如下:
Remote Address:[::]:
Request URL:http://localhost:8080/fax/downloadFax?fname=%e6%8e%88%e6%9d%832.png
Request Method:GET
Status Code: Created
2. 第一时间认为是URL编解码的问题,所以学习了一下相关的转换方法:
//将utf-8格式的中文转换成URL编码
encodeStr = URLEncoder.encode(fname, "utf-8");
//将URL编码的字符串转换成utf-8格式的中文
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"属性即可,没有这个参数可以手动加上。
关于HTTP GET请求的url中文参数编码的更多相关文章
- 【记录】JS 获取 URL 中文参数编码
比如 URL:http://www.xxxx.com/中文参数 这个在 js 获取"中文参数"的时候会出现乱码. 解决方法:decodeURIComponent(获取的中文参数);
- js 处理url中文参数 java端接收处理
正常情况下当http请求中带有中文参数时,浏览器会自动对中文进行一次编码(按照当前页面的pageEncoding),java端容器会对接收到的参数自动进行一次转码,则request.getParame ...
- 浏览器发起Get,Post请求时候传递的参数编码问题
浏览器发起Get,Post请求时候传递的参数编码问题 最近开发一个网站的时候,用了很多ajax方法,在页面发起Get,post请求,中间自然捎带有很多参数,有中文,有英文,英文一般是不存在编码问题的, ...
- [转]PHP base64_encode 在URL地址参数编码上使用
因为我使用公钥,使用php的 openssl 加密之后的资料 base64_encode()字符串,然后放入请求 url 中当作参数,urlencode(base64_encode()),然后用 ur ...
- request.getParameter()获取URL中文参数乱码的解决办法
这个问题耽误好长时间,URL传中文参数出现乱码,就算首次使用request接收就添加 request.setCharacterEncoding("UTf-8"); 依然报错不误. ...
- java url中文参数乱码问题
http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL ...
- -_-#【乱码】URL中文参数
JavaScript利用URL向后台传入中文参数乱码问题解决之道! encodeURIComponent(encodeURIComponent('ya呀')) http://wap.baomihua. ...
- URL中文参数乱码的一个解决办法
浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为ut ...
- ajax请求中包含中文参数
对需要传递的中文参数先进行两次转码: 1.js文件中使用encodeURI()方法. var url = "Validate.jsp?id=" + encodeURI(encode ...
随机推荐
- 台电幻彩u盘拆解
- [转载] 关关采集不能生成html的问题
转载地址:http://www.pcliver.com/archives/814.html 关关不能生成html的问题: 1.关关设置的问题 2.模板标签关关不支持 排除法之后,得出我的网站是模板的问 ...
- 【海岛帝国系列赛】No.3 海岛帝国:运输资源
海岛帝国:运输资源 [试题描述] YSF考虑到“药师傅”帝国现在资源极度不平均,于是,商讨启用南水北调工程.YZM为首席工程师.现在,YSF由于工作紧张,准备军用物资和民用物资.但他要时时关注运输工程 ...
- STM32的PWM输出极性的问题
又开始玩PWM, 先试了一下PWM的两个引脚输出相反极性, 但是分析仪上看到, 两个脚是一样一样的. 写是这么写的: ... TIM_OCInitStructure.TIM_OCMode=TIM_OC ...
- jsp数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上 useUnicode=true&characterEncoding=GBK 就OK了. 之前所写,迁移至此 原文链接:ht ...
- composer 报 zlib_decode(): data error
使用composer 时报 zlib_decode(): data error 错误. 解决办法:执行 composer self-update 即可
- Virtualbox后台管理之VBoxManage
Virtualbox是提供了后台启动的.只是不是默认的. 查看有哪些虚拟机 VBoxManage list vms 查看虚拟的详细信息 VBoxManage list vms --long 查看运行着 ...
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.10.SportsStore:上传图片
1 扩展数据库 打开表定义,新增两列可空 ) 2 增强领域模型 为Products类添加如下属性 publicstring ImageMimeType { get; set; } 第一个属性不会在界面 ...
- win7无法通过DHCP获得IP地址
问题:win7无法通过DHCP获得IP地址(手动设置没有问题),但XP可以自动获取. 前些时候,某局域网反应部分WIN7系统无法正常从DHCP服务器(windows dhcp 服务器)获取ip地址,交 ...
- iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路径. ...