URLEncode原理

一、背景

客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文。而直接把中文放到网址中请求是不允许的,所以需要用URLEncoder编码地址,将网址中的非ASCII码内容转换成可以传输的字符。

不会被编码的内容:
1.大写字母A-Z
2.小写字母a-z
3.数字 0-9
4.标点符 - _ . ! ~ * ' (和 ,)

二、urlEncode

对汉字以及特殊字符进行编码。称为百分号编码,也称作URL编码,是特定上下文的统一资源定位符 (URL)的编码机制

三、什么是URL

URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)

四、原理

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

1、eg:  0x9c  URLEncoder --> %9c
2、内容中的空格‘ ’ ,全部用+代替
3、注:与Hex不同,Hex是将所有的字符转换为16进制表示,而URLEncoder是将ASCII码集之外的转换为%加上相应的16进制,而ASCII码集内的字符不进行处理

五、特殊字符

特殊字符编码结果
+%2B
=%3D
#%23
.......

六、使用URLEncode原因

1、字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的
2、因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符
3、url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。(主要就是消除服务器解析url时的奇异)

七、转换规则

1、此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数
1、空格则编码为加号(+)
3、按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为%的形式也就是了。自然也是16进制的形式。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值