关于url编解码应该选用的函数
先给出所有的函数
-
- escape
- unescape
-
- encodeURI
- decodeURI
-
- encodeURIComponent
- decodeURIComponent
其中第一组已经被废弃了。因为它不支持unicode的编解码。
可以看到escape对于中文无法获得正确的url编码。
至于 encodeURI 和 encodeURIComponent之间的差别,前者适用于编码整个形成整个URI,而后者适合编码局部,比如search部分。
可以看到encodeURI能够获得一个非常正常的可以访问的URI链接。
而encodeURIComponent对于同样的参数的结果如下。
可以看到,它把正常URI链接里面的 /
和#
等字符也给编码了,这就导致得到的字符串不再是一个合法的URI链接。
所以encodeURIComponent适合于编码 search部分。比如这样的情景。
这里模拟了file字段里有#和/这样的特殊字符,如果用encodeURI就无法正常编码了,因为它会跳过,而encodeURIComponent则可以完成这一任务。
对于前端来说,一个项目肯定是有一个baseURI的,比如部署在 url.wuuconix.link 。这时候一般来说处理的时候就是往这个baseURI后面加上一个写段,即search。所以encodeURIComponent的使用频率会更大一些。