escape(),encodeURI() 和 encodeURIComponent()的基本功能都是把 URI 非法字符转化成合法字符,即对字符串进行编码。
以上三者解码的函数为unescape(),decodeURI和 decodeURIComponent()。
escape可以达到类似URL Encode的效果,但是它对于非ASCII字符使用了一种非标准的的实现,例如汉字“编码”会被escape成%u7F16%u7801这种%uxxxx奇怪的表示,W3C把这个函数废弃了。
encodeURI和
encodeURIComponent的区别在于前者被设计来用于对完整URL进行URL encode,于是URL中的功能字符,比如&, ?, /, =等等这些并不会被转义;而后者被设计来对一个URL中的值进行转义,会把这些功能字符也进行转义。
例:
encodeURI('https://www.baidu.com/ a b c') // "https://www.baidu.com/%20a%20b%20c" encodeURIComponent('https://www.baidu.com/ a b c') // "https%3A%2F%2Fwww.baidu.com%2F%20a%20b%20c"