【js】关于escape(), encodeURI(), 和 encodeURIComponent()

在JavaScript中,escape(), encodeURI(), 和 encodeURIComponent() 是用于编码URI(Uniform Resource Identifiers)的三个函数。下面分别介绍它们的用法和区别。

escape()

escape() 函数是用于对字符串进行编码,以便它们能够被用于URI中。这个函数已经被废弃,并且不应该在新代码中使用,因为它不能正确地处理所有的Unicode字符,并且已经被 encodeURI()encodeURIComponent() 取代。
用法:

var encodedString = escape(string);

escape() 函数会转义除了字母、数字、@*-_ 以及 +./ 之外的所有字符。它使用%加上两位十六进制数来替换每个字符。

encodeURI()

encodeURI() 函数用于编码整个URI。它不会对以下字符进行编码:A-Z, a-z, 0-9, -, _, ., !, ~, *, ', (, ), ;, :, @, &, =, +, $, ,, /, ?, #
用法:

var encodedURI = encodeURI(uri);

例子:

var uri = "http://www.example.com/a b c?d=e&f=123#test";
var encodedURI = encodeURI(uri);
console.log(encodedURI); // "http://www.example.com/a%20b%20c?d=e&f=123#test"

encodeURIComponent()

encodeURIComponent() 函数用于编码URI组件,例如查询字符串参数、路径片段等。它不会对以下字符进行编码:A-Z, a-z, 0-9, -, _, ., !, ~, *, ', (, )
用法:

var encodedURIComponent = encodeURIComponent(uriComponent);

例子:

var component = "a b c?d=e&f=123#test";
var encodedURIComponent = encodeURIComponent(component);
console.log(encodedURIComponent); // "a%20b%20c%3Fd%3De%26f%3D123%23test"

区别

  • escape() 已废弃,不推荐使用。
  • encodeURI() 用于编码整个URI,不编码URI组件中的特殊字符,如:/?#[]@等。
  • encodeURIComponent() 用于编码URI组件,几乎对所有非ASCII字符和特殊字符进行编码,只保留少部分不被编码的字符。
    总结来说,如果你需要编码整个URI,使用 encodeURI();如果你需要编码URI中的某个组件(例如查询字符串),使用 encodeURIComponent()。而 escape() 函数由于其局限性,已经被现代JavaScript开发所弃用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值