encodeURI 和encodeURIComponent

encodeURI 和encodeURIComponent

encodeURI

encodeURI 将除以下字符之外的所有字符替换为 UTF-8 转义序列:

类型包含
保留字符; , / ? : @ & = + $
非转义字符a-zA-Z0-9 - _ . ! ~ * ' ( )
数字符号#

warning:如果 URL 需要遵循较新的RFC3986标准,那么方括号是被保留的 (给 IPv6),因此对于那些没有被编码的 URL 部分 (例如主机),可以使用下面的代码

function fixedEncodeURI(str) {
  return encodeURI(str).replace(/%5B/g, "[").replace(/%5D/g, "]");
}

结论:encodeURI()通常用于转码整个 URL,不会对URL 元字符以及语义字符进行转码

encodeURIComponent

encodeURIComponent 转义除了如下所示外的所有字符:

不转义的字符:
A-Z a-z 0-9 - _ . ! ~ * ' ( )

与 encodeURI() 相比,此函数会编码更多的字符,包括 URI 语法的一部分。
通常encodeURIComponent 只用于转义URI的组成部分,如?后带参数的部分等。

:若整个链接被encodeURIComponent()转码,则该链接无法被浏览器访问,需要解码之后才可以正常访问。

// Encodes characters such as ?,=,/,&,:
console.log(`?x=${encodeURIComponent('test?')}`);
// Expected output: "?x=test%3F"
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值