mysql是用单引号还是用撇号_为什么encodeURIComponent不编码单引号/撇号?

小编典典

encodeURIComponent 转义除以下字符外的所有字符:

字母,十进制数字-_。!〜*’()

如果您希望使用兼容的编码与RFC 3986(其中储备!,',(,),和*),您可以使用:

function rfc3986EncodeURIComponent (str) {

return encodeURIComponent(str).replace(/[!'()*]/g, escape);

}

您可以在MDN上获取更多信息。

更新:

要回答您的问题,关于为什么'上面提到的其他字符以及为什么不是由encodeURIComponent编码的,简短的回答是它们只需要在某些URI方案中进行编码,对它们进行编码的决定取决于您使用的方案。

产生URI的应用程序应该对与中的字符相对应的数据八位字节进行百分比编码,reserved

set除非URI方案明确允许这些字符表示该组件中的数据。如果在URI组件中找到了保留字符,并且该字符没有定界角色,则必须将其解释为代表与该字符的US-

ASCII编码相对应的数据八位位组。

其中“保留集”定义为

reserved = gen-delims / sub-delims

gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"

sub-delims = "!" / "$" / "&" / "'" / "(" / ")"

/ "*" / "+" / "," / ";" / "="

撇号在sub-

delims组中。换句话说,如果您确定使用的应用程序会知道如何处理这些字符,则必须特别避免对这些字符进行编码:例如,如果您错误地编码?并且&它们将不再分隔查询部分。历史上也有建议使用;和分隔的路径段参数,(并没有被广泛采用),因此仍然允许使用这些字符。并不是说撇号unreserved在URI数据中是“免费使用”(即),而是假定它在URI上下文中将具有某些特殊含义,例如segment:

segment = *pchar

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

2020-07-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值