示例
我们使用如下字符串http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
然后看结果
encodeURIComponent()
=>http%3A%2F%2Fusername%3Apassword%40www.example.com%3A80%2Fpath%2Fto%2Ffile.php%3Ffoo%3D316%26bar%3Dthis%2Bhas%2Bspaces%23anchor
encodeURI()
=>http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
区别
可以看到encodeURI不会对 1保留字符 ; , / ? : @ & = + $
2非转义的字符 字母 数字 - _ . ! ~ * ' ( )
3数字符号#
encodeURLComponent
不会对A-Z a-z 0-9 - _ . ! ~ * ' ( )
进行转义。
encodeURI
这个方法用于对整个 URL 进行编码,包括协议、域名、路径和查询参数。它将非 ASCII 字符和特殊字符转换为十六进制格式,确保它们可以在 URL 中安全传输。但需要注意,保留字符(如 :、/、?、& 等)不会被编码,因为它们在 URL 中具有特殊含义。
使用场景
encodeURLComponent
当我们URI参数中有一些键值对,值中存在一些特殊字符,例如https://127.0.0.1?c=&time=1243
此时可以使用其进行转义。encodeURIComponent()编码后, 必须要用decodeURIComponent()对应解码;