encodeURI和encodeURIComponent都是ECMA-262
标准中定义的函数,它们都是用来对URI(RFC-2396
)字符串进行编码的全局函数,但是处理方式和使用场景不同。
RFC-2396字符串分类
保留字符
URI中的保留关键字符,用于分割URI的各个部分。“;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”
Mark字符
RFC-2396特别定义的字符,但没有说明特殊用途。“-” | “_” | “.” | “!” | “~” | “*” | “’” | “(” | “)”
基本字符
URI的主题部分,包括:所有的大写字母、小写字母和数字
区别
- encodeURI
该函数对传入字符串中的所有非(基本字符、Mark字符和保留字符)进行转义编码(escaping).
var uri="my test.asp?name=ståle&car=saab";
document.write(encodeURI(uri));
–> my%20test.asp?name=st%C3%A5le&car=saab
- encodeURIComponent
对于保留字符同样做转义编码.
var uri="http://jb51.net/my test.asp?name=ståle&car=saab";
document.write(encodeURIComponent(uri));
–> http%3A%2F%2Fjb51.net%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab