JavaScript提供了两个用于URL编码的方法:encodeURI()
和encodeURIComponent()
。
encodeURI()
encodeURI()
方法用于将整个URL编码,包括特殊字符,但不包括以下字符:/、?、&、=和#。编码后的字符是%xx,其中xx是字符的ASCII十六进制值。
下面是一个使用encodeURI()
的示例:
const url = encodeURI("http://example.com/?name=小明&age=18");
console.log(url);
// 输出:http://example.com/?name=%E5%B0%8F%E6%98%8E&age=18
在示例中,encodeURI()
方法将URL中的小明
编码为%E5%B0%8F%E6%98%8E
,因为在URL中,小明
包含了一个非转义字符,所以使用encodeURIComponent()
对整个URL进行编码可能会出现错误。
encodeURIComponent()
encodeURIComponent()
方法用于将URL中的字符串编码,包括URL中的特殊字符。编码后的字符是%xx,其中xx是字符的ASCII十六进制值。
下面是一个使用encodeURIComponent()
的示例:
const url = "http://example.com/?name=" + encodeURIComponent("小明") + "&age=18";
console.log(url);
// 输出:http://example.com/?name=%E5%B0%8F%E6%98%8E&age=18
在这个示例中,因为我们要将小明
作为URL参数传递,所以必须对其进行编码,使用encodeURIComponent()
对字符串进行编码,最终得到一个符合URL规范的字符串。
总结
encodeURI()
方法用于将整个URL编码,不包括/、?、&、=和#字符。encodeURIComponent()
方法用于将URL中的字符串编码,包括URL中的特殊字符。
当我们需要对URL中的字符串进行编码时,应该使用encodeURIComponent()
;而当我们需要对整个URL进行编码时,应该使用encodeURI()
。
注意:对于URL中的中文字符,使用encodeURIComponent()
和encodeURI()
得到的结果是一样的。在实际应用中,我们建议使用encodeURIComponent()
来进行URL编码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript encodeURI 和encodeURIComponent - Python技术站