java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法
更新时间:2017年03月21日 10:24:08 作者:digdeep
这篇文章主要给大家介绍了关于java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
最近在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到的是 Base64的编码字符串
za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==
显然 这里面含有了 特殊字符: / + = 等等,如果直接通过url 来传递该参数:
url = "xxxxx?param=" + "za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==";
那么在服务端获得 param 会变成类似于下面的值:
"za4T8MHB/6mhmYgXB7IntyyOUL7Cl 0jv5rFxAIFVji8GDrcf k8g=="
我们看到 三个 + 号消失了。
其原因就是:
如果url参数值含有特殊字符时,需要使用 url 编码。
url = "xxxxx?param=" + URLEncoder.encode("xxx", "utf-8");
然后服务端获取时:
String param = URLDecoder.decode(param, "utf-8");
这样才能获得正确的值:
"za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g=="
其实 js 中也有类似功能的函数:
参见:
js中编码函数:escape,encodeURI,encodeURIComponent
注意事项:
URLEncoder
should be the way to go. You only need to keep in mind to encode only the individual query string parameter name and/or value, not the entire URL, for sure not the query string parameter separator character & nor the parameter name-value separator character =
String q = "random word 拢500 bank $";
String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");
URLEncoder 必须 仅仅 编码 参数 或者参数的值,不能编码整个 url,也不能一起对
param=value
进行编码。而是应该:
param=URLEncode(value, "utf-8")
或者
URLEncode(param, "utf-8")=URLEncode(value, "utf-8")
因为 url 中的 & 和 = 他们是作为参数之间 以及 参数和值之间的分隔符的。如果一起编码了,就无法区分他们了。
进一步参考文档:
https://www.talisman.org/~erlkonig/misc/lunatech%5Ewhat-every-webdev-must-know-about-url-encoding/
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
-
-
SpringRetry重试框架的具体使用
在项目开发中,经常会遇到需要重试的地方。本文主要介绍了SpringRetry重试框架的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2021-07-07
-
-
SpringBoot深入探究四种静态资源访问的方式
这一节详细的学习一下SpringBoot的静态资源访问相关的知识点。像这样的知识点还挺多,比如SpringBoot2的Junit单元测试等等。本章我们来了解静态资源访问的四种方式
2022-05-05
-
-
MyBatis的9种动态标签详解
大家好,本篇文章主要讲的是MyBatis的9种动态标签详解,感兴趣的同学赶快来看一看吧,感兴趣的同学赶快来看一看吧
2021-12-12
-
IDEA中安装和使用Lombok插件的方法
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法,本文重点给大家介绍IDEA中安装和使用Lombok插件的方法,感兴趣的朋友一起看看吧
2021-06-06
-
Java pdf和jpg互转案例
这篇文章主要介绍了Java pdf和jpg互转案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
2020-09-09
-
java实现图片验证码
这篇文章主要为大家详细介绍了java实现图片验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-04-04
-
-