不深入只浅出——iOS的URL编码和解码

2017-07-24  本文已影响48人  聪明的笨白

首先简单讲解下为什么URL需要编码

服务端解析URL是通过遍历字节流的方式处理

Http协议中参数的传递是通过键值对"key=value"形式来进行,多参数之间使用“&”符号对键值对进行拼接,如:"?key1=value1&key2=value2"。而服务端对URL的解析,也是以“&”分割出每个参数键值对,以“=”分割每个键值对中的键和值,一个字节一个字节对URL字节流进行处理的。

URL编码原理只是在特殊字符的各个字节前加上%

上述的解析会产生一个问题:如果参数的值本身就带有“&”,“=”这种特殊字符怎么办?这就是进行URL编码的原因所在。URL编码原理只是在特殊字符的各个字节前加上%,这里说的特殊字符不仅仅只是“=”和“&”,而且还有保留字符、不安全字符以及非ASCII码字符,下面会详细解析。

URL编码默认使用的字符集是US-ASCII

既然是编码,自然就会用到字符集,就像解析密码需要密码本一样。URL编码默认使用的字符集是US-ASCII,所以对于URL编码,最准确的定义应该是:百分号(%)加上该字节对应的两位US-ASCII字符(由0123456789ABCDEF组成,代表该字节的十六进制形式)。那么,什么情况下需要对字节进行编码呢,还是说所有字节都需要编码?对于URL中的合法字符,编码和不编码是等价的,也就是说,假如参数为:key1=url,这种情况下编码与不编码是一样的,进而言之,只有对保留字符、不安全字符以及非ASCII码字符进行的URL编码才有实际的意义。

iOS的URL编码说明

iOS的URL解码说明

上一篇下一篇

猜你喜欢

热点阅读