- escape只适用于编码字符串,不能编码Url,当我们需要编码Url的时候就要放弃escape
- 那么编码Url应该使用什么呢?首先我们知道encodeUrl这个方法,这个方法在编码Url的时候会把空格编译成%20,但是这个方法不能编译“/”
- 例如:
encodeURI("http://www.baidu.com/index/one and two");
编码后:
http://www.cnblogs.com/index/one%20other%20two
那我们就又要考虑如何编译"/"呢。
这时我们就又发现了encodeUrlComponent这个方法,它可以把Url中的"/"编译成%2F。
- 例如:
encodeURIComponent("http://www.cnblogs.com/index/one other two");
编码后:
"http://www.cnblogs.com/season-huang%2Fone%20other%20two"
那我们就要分析了,encodeUrl和encodeUrlComponent到底有什么区别呢?
-
encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+'
-
encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()'
-
所以encodeURIComponent比encodeURI编码的范围更大。
当我们需要编码Url的参数的时候,encodeUrlComponent是最好的选择。