Javascript编码解码URL

481 阅读1分钟

Javascript编码解码URL

1. encodeURIComponent()和decodeURIComponent()

encodeURIComponent 转义除了字母、数字、(、)、.、!、~、*、'、-和_之外的所有字符。

console.log(encodeURIComponent("http://www.w3school.com.cn"));
console.log(encodeURIComponent("http://www.w3school.com.cn/My first/"));
console.log(encodeURIComponent(",/?:@&=+$#"));
console.log(encodeURIComponent("你好"));

output:
http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
%E4%BD%A0%E5%A5%BD

2. encodeURI()和decodeURI()

encodeURI 会替换所有的字符,但不包括以下字符: 保留字符 ; , / ? : @ & = + $ 非转义的字符 字母 数字 - _ . ! ~ * ' ( ) 数字符号 #

console.log(encodeURI("http://www.w3school.com.cn"));
console.log(encodeURI("http://www.w3school.com.cn/My first/"));
console.log(encodeURI(",/?:@&=+$#"));
console.log(encodeURI("你好"));

output:
http://www.w3school.com.cn
http://www.w3school.com.cn/My%20first/
,/?:@&=+$#
%E4%BD%A0%E5%A5%BD

3. 比较

encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号; encodeURIComponent()则会对它发现的任何非标准字符进行编码。

encodeURI:适用于url跳转时。 encodeURIComponent:适用于url作为参数传递时。

使用encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20; encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。

4. MDN

developer.mozilla.org/zh-CN/docs/…

developer.mozilla.org/zh-CN/docs/…