关于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的使用频率会更大一些。
本文详细介绍了URL编码中常用的几个函数:escape、unescape、encodeURI和encodeURIComponent。虽然escape和unescape已被废弃,但它们不支持Unicode编码。encodeURI适合编码整个URI,而encodeURIComponent适用于编码URI的特定部分,如查询参数。由于encodeURIComponent会编码包括/和#在内的特殊字符,这可能导致生成的字符串不是一个有效的URI。因此,它更适合用于编码可能包含特殊字符的搜索部分。在前端开发中,由于经常需要拼接baseURI和search部分,encodeURIComponent的使用更为常见。

1151

被折叠的 条评论
为什么被折叠?



