encodeURI encodeURIComponent 的区别

无心戈1 分钟阅读

encodeURI和encodeURIComponent主要有以下区别:

encodeURI主要用于对整个 URI 进行编码,它会对一些特殊字符进行编码,但不会对某些本身在 URI 中具有特殊含义的字符(如:、/、;、?、@等)进行编码。

encodeURIComponent则会对更多的字符进行编码,包括上述在 URI 中具有特殊含义的字符。它主要用于对 URI 的各个部分(如查询参数的值等)进行更彻底的编码。

例:

const uri = "https://example.com/page?param1=value1&param2=value 2";
console.log(encodeURI(uri));
// 输出可能类似于:https://example.com/page?param1=value1&param2=value%202
console.log(encodeURIComponent(uri));
// 输出可能类似于:https%3A%2F%2Fexample%2Ecom%2Fpage%3Fparam1%3Dvalue1%26param2%3Dvalue%25202

简单总结一下,一个 URL 通过encodeURI编码后仍然是 URL,可以被浏览器访问,而encodeURIComponent编码后会成为 URL 的组成部分,但不能再被浏览器访问。