博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈URLEncoder编码算法
阅读量:7233 次
发布时间:2019-06-29

本文共 1227 字,大约阅读时间需要 4 分钟。

一、为什么要用URLEncoder

客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文。

而直接把中文放到网址中请求是不允许的,所以需要用URLEncoder编码地址,

将网址中的非ASCII码内容转换成可以传输的字符

 

不会被编码的内容

1.大写字母A-Z

2.小写字母a-z

3.数字 0-9

4.标点符 - _ . ! ~ * ' (和 ,)

 

 

二、编码原理

1、将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头

eg:  0x9c  URLEncoder --> %9c

2、内容中的空格‘ ’ ,全部用+代替

3、注:与Hex不同,Hex是将所有的字符转换为16进制表示,而URLEncoder是将ASCII码集之外的转换为%加上相应的16进制,而ASCII码集内的字符不进行处理

 

三、应用场景

1、所有的GET请求

2、网址中有中文等情况

3、POST请求,所有的Key和Value在提交之前都要经过URLEncoder

 

四、示例

try {
String a = URLEncoder.encode("a", "UTF-8"); Log.i("encode","a 进行URLEncoder编码后-->"+a ); String b = URLEncoder.encode("a中", "UTF-8"); Log.i("encode","a中 进行URLEncoder编码后-->"+b ); String decode = nURLDecoder.decode("a%E4%B8%AD", "UTF-8"); Log.i("encode","a%E4%B8%AD 进行URLDecoder解码后-->"+decode); } catch (UnsupportedEncodingException e) {
e.printStackTrace(); }

运行结果:

10-17 07:33:14.357 1012-1012/com.xqx.encrypsthow I/encode﹕ a 进行URLEncoder编码后-->a

10-17 07:33:14.367 1012-1012/com.xqx.encrypsthow I/encode﹕ a中 进行URLEncoder编码后-->a%E4%B8%AD
10-17 07:33:14.377 1012-1012/com.xqx.encrypsthow I/encode﹕ a%E4%B8%AD 进行URLDecoder解码后-->a中

可以看出 字符'a' 并没有编码  而 中文 '中' 进行了编码

与URLEncoder编码对应的是URLDecoder解码 

可以看出 "a中"--编码-->"a%E4%B8%AD"--解码-->"a中"

 

相关知识:

转载地址:http://bcvfm.baihongyu.com/

你可能感兴趣的文章
同步和异步消息机制
查看>>
Android-x86 4.2 发布,基于 Android 4.2.2
查看>>
有关LOGO设计软件
查看>>
模拟搜索结果项
查看>>
Waiting For KKSFBC CHILD COMPLETION?
查看>>
ASP.NET MVC Part.1(创建基本的 MVC 应用程序)
查看>>
批量删除数据库中指定表的t-sql脚本
查看>>
闯迷宫
查看>>
Heritrix 3.1.0 源码解析(八)
查看>>
宋体文件C#读取CSV文件-java教程
查看>>
建立一个windows服务(可用于实现计划任务,事件监控..) .NET
查看>>
提示命令命令行将U盘文件系统转换成ntfs
查看>>
腰围2尺1,2,3,4,5,6,7,8寸分别等于是多少厘米/英寸(对照表)
查看>>
hdu 2874 Connections between cities
查看>>
ASP.NET过滤器的应用
查看>>
setprecision、fixed、showpoint的用法总结(经典!!超经典!!)
查看>>
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用...
查看>>
安全svn快速安装
查看>>
Lucene核心--构建Lucene搜索(上篇,理论篇)
查看>>
hdu 2191(多重背包)
查看>>