Android数据安全之URLEncoder编码
来源:互联网 发布:securecrt mac 破解 编辑:程序博客网 时间:2024/06/06 03:53
URLEncoder编码
客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文、?、&等特殊字符。而直接把这些字符放到网址中请求是不允许的,容易和get请求的转义符冲突,也容易出现丢失或乱码的现象,所以需要用URLEncoder编码地址,将网址中的非ASCII码内容转换成可以传输的字符。
编码原理
1、将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头,而ASCII码集内的字符不进行处理。
eg: 0x9c URLEncoder –> %9c
2、内容中的空格‘ ’ ,全部用+代替
3、注:与Hex不同,Hex是将所有的字符转换为16进制表示,而URLEncoder是将ASCII码集之外的转换为%加上相应的16进制。
应用场景
1、所有的GET请求
2、网址中有中文等情况
3、POST请求,所有的Key和Value在提交之前都要经过URLEncoder
代码实现
@Test public void URLEncodeTest() { //地址栏不允许中文,传递一些特殊字符 & ? ,而这些符号很容易和get提交上的转义符号冲突 String url = "http://www.baidu.com?search=\"中文字符\"&name=uy?&cc&pwd=?ke&w"; //将url进行分割,对相应的字符串进行URLEncode编码,然后再拼接,最后解码 StringBuffer sb = new StringBuffer("http://www.baidu.com?"); //通过URLDeCoder转码 String searchEncode = URLEncoder.encode("search=\"中文字符\""); System.out.println("search=\"中文字符\"--编码后: " + searchEncode); String nameEncode = URLEncoder.encode("name=uy?&cc"); System.out.println("name=uy?&cc--编码后: " + nameEncode); String pwdEncode = URLEncoder.encode("pwd=?ke&w"); System.out.println("pwd=?ke&w--编码后: " + pwdEncode); //转码后拼接 String encodeUrl = sb.append(searchEncode).append("&") .append(nameEncode).append("&") .append(pwdEncode).toString(); System.out.println("初始的 url=" + url); System.out.println("通过URLDeCoder转码 encodeUrl=" + encodeUrl); //把转码的url 还原 String decodeUrl = URLDecoder.decode(encodeUrl); System.out.println("通过URLDeCoder解码 decodeUrl=" + decodeUrl); }
测试结果:
search="中文字符"--编码后: search%3D%22%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6%22name=uy?&cc--编码后: name%3Duy%3F%26ccpwd=?ke&w--编码后: pwd%3D%3Fke%26w初始的 url=http://www.baidu.com?search="中文字符"&name=uy?&cc&pwd=?ke&w通过URLDeCoder转码 encodeUrl=http://www.baidu.com?search%3D%22%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6%22&name%3Duy%3F%26cc&pwd%3D%3Fke%26w通过URLDeCoder解码 decodeUrl=http://www.baidu.com?search="中文字符"&name=uy?&cc&pwd=?ke&w
可以看出ASCII码集内的字符字符并没有编码 而 中文字符进行了编码
追及
下面附上一张ASCII字符码表
1 0
- Android数据安全之URLEncoder编码
- Android数据安全之Base64编码
- Android URLEncoder
- URLEncoder编码问题
- URLEncoder 编码的实现
- URLEncoder编码和解码
- URLDecoder解码、URLEncoder编码
- URLEncoder URL编码、解码
- 浅谈URLEncoder编码算法
- Android数据安全之MD5加密
- Android数据安全之DES加密
- Android数据安全之AES加密
- Android数据安全之异或加密
- 四、Android安全机制之数据加密
- 编码 URLEncoder 和 解码 URLDecoder
- 关于URLEncoder编码的问题
- 编码 URLEncoder 和 解码 URLDecoder
- UrlEncoder与URLDecoder编码解码
- 一个简单自定义控件以及.9patch图片的使用
- 51nod 1007 正整数分组【01背包】
- 归并排序
- 简单使用ImageLoader
- C++11 新标准(五)
- Android数据安全之URLEncoder编码
- 。。
- 求素数(质数)算法
- ip用int类型存储
- chmod命令详细用法
- bzoj 1088: [SCOI2005]扫雷Mine (枚举+判定)
- NGUI源码分析(五) UIPanel
- matlab 图片批量读取
- web.js.数组之join