为啥需要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的主要内容,如果未能解决你的问题,请参考以下文章

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥需要 preferredMaxLayoutWidth?

为啥需要 JsonRequestBehavior?

为啥我的程序需要两行输入,为啥我的 GPA 计算错误 c#?

为啥我们需要回调事件?