请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式
2015-01-22 22:09
821 查看
遇到一个问题
在一个地址链接(URL)里使用 url?param1=val1¶m2=val2 的方式传递参数,结果在获取参数值时发现不是当初设定的值。具体案例
以特殊字符井号(#)为例。部分参数值丢了
JS里设置参数window.location="some_web_project/xxx.jsp?param_key=abc#xyz";
Java中取参数值
Sting paramVal = request.getParameter("param_key");
你会发现在 Java 中取到的值,不是设定的 abc#xyz ,而是 abc 。井号后面的值没了,包括井号本身。
为什么呢?
网上查了下,URL中的井号(#)有其特殊的含义,表示位置(锚点)。那怎么办呢?参数里就是有特殊字符,怎么才能拿到数据呢?
解决之道
先给参数值编码,再传递即可。将上面的JS代码改为
var param_val = encodeURIComponent("abc#xyz"); window.location="some_web_project/xxx.jsp?param_key=" + param_val;
小结
如果请求(Request)的参数(Parameter)里包含特殊字符,记得将参数值编码 encodeURIComponent(SPECIAL_VALUE)相关文章推荐
- 请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式
- Ajax 以GET方式请求时,参数中包含特殊字符的处理
- Ajax 以GET方式请求时,参数中包含 "#" 特殊字符的处理
- HTTP通过Get请求传递参数时特殊字符被转码的处理方式
- Java http处理get请求,参数中带特殊字符处理方式
- $.ajax()post方式请求参数无法传递,request.getParameter()无法获取
- 关于处理GET方式提交的含有特殊字符的参数
- 密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题
- ajax请求中传递的参数中如果含有特殊字符怎么处理?
- GET请求中参数含有某些特殊字符的处理
- URL传递参数包含特殊字符的处理
- Linux 文件路径包含特殊字符的处理方式
- 关于处理GET方式提交的含有特殊字符的参数
- 密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题
- ajax请求中传递的参数中如果含有特殊字符怎么处理?
- js页面传参数时,参数值包含特殊字符的处理
- 关于处理GET方式提交的含有特殊字符的参数(转载)
- iOS 密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题
- Javascript URL中参数包含特殊字符的处理
- hibernate hql语句中条件参数中包含特殊字符单引号' 的处理办法