为啥需要urlEncode
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥需要urlEncode相关的知识,希望对你有一定的参考价值。
参考技术A 字符串数据以url的形式传递给web服务器时,对字符是有限制的。为了符合url的规范,这些被限制的字符,就需要被转义。比方说:把一个邮箱放入url就需要转义,因为邮箱中包含限制字符 @ 。在标准的url规范中,中文和很多的字符是不允许出现在url中的。这些需要转义的字符都将被替换成 % 后跟两位十六进制数。
这些字符都是不可打印的,自然需要进行转化。
例如:emoji字符👴🏻👮🏽,转化也是理所当然的。
url中的分隔符包含主要分隔符 :#[]@?/ 和次要分隔符 !$&'()*+,;= 。对于url的 query 参数和值,如果在分隔符的包含范围内,除了 ? 和 / 外,都需要转义。例如:对于原始url https://www.baidu.com?paramA=哈哈¶mB=& 来说, 哈哈 和 paramB=& 中的 & 就需要参与转义。否则,对于 & 来说,你认为它是一个参数值,还是url本身的分隔符呢?
例如:空格。为了避免歧义,需要被转化成 + 或者 %20 。具体转换成 + 还是 %20 主要依据不同的转换标准。
AFURLRequestSerialization 的源码很好地说明了转义的过程和规则:
以上是关于为啥需要urlEncode的主要内容,如果未能解决你的问题,请参考以下文章
为啥 g++ 需要 libstdc++.a?为啥不是默认值?