encodeURLComponent() 可以把字符串作为URL组件进行编码。
该方法不会对ASCLL字母和数字进行编码,也不会对一些ASCLL标点符号进行编码:-_!~'()
其他字符都是由一个或者多个十六进制的转义序列替代的。
下面url地址 进行编码:
var uri="https://www.runoob.com/my test.php?name=ståle&car=saab";
document.write(encodeURIComponent(uri));
输出为:
https%3A%2F%2Fwww.runoob.com%2Fmy%20test.php%3Fname%3Dst%C3%A5le%26car%3Dsaab
问题: 在获取地址url参数的时候,如果有一些参数是带有特殊符号的,导致直接获取的参数不正常
原因: 这些特殊字符会被浏览器当作关键字,无法用这些字符传参
解决办法:用 encodeURLComponent() 进行转义,转成一个或者多个十六进制的转义序列
符号 | url中转义结果 | 转义码 |
+ | URL 中+号表示空格 | %2B |
空格 | URL中的空格可以用+号或者编码 | %20 |
/ | 分隔目录和子目录 | %2F |
? | 分隔实际的URL和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | URL 中指定的参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |