我想知道为什么“%20”被用作URL的空间,特别是为什么使用20%,为什么我们甚至需要摆在首位。
Answer 1:
这就是所谓百分号编码 。 某些字符不能在一个URI(例如#
,因为它表示URL片段),所以它们与字符可以表示( #
变为%23
)
下面是从同一篇文章的摘录:
当从预留的一组(一个“保留字”)的字符有特殊含义(一个“保留的目的”)在一定的范围内,和URI方案说,这是需要使用该字符用于其他目的,则字符必须是百分比编码 。 百分之-编码保留字符涉及的字符转换成ASCII码其相应的字节值,然后表示的值作为对十六进制数字。 其被用作转义字符的位数,由百分号(“%”)之前,然后在URI中使用代替保留字符的。 (对于非ASCII字符,它通常被转换到它的字节序列中的UTF-8,然后每个字节值被表示为上面)。
空格字符的字符代码为32
:
> ' '.charCodeAt(0)
32
其是20
碱基-16:
> ' '.charCodeAt(0).toString(16)
"20"
钉在它前面的一个百分号,你会得到%20
。
Answer 2:
它采用百分号编码。 你可以看到百分号编码的RFC的一部分统一资源标识符(URI):通用语法
A-百分号编码机制被用来表示在组件数据八比特组时该八位组的对应的字符是外
允许的一组或正被用作的定界符,或内,则
零件。 甲百分比编码八位组被编码为一个字符
三重峰,由百分比字符“%”后面的两个
表示八位的数值十六进制数字。 对于
例如,“20%”是百分号编码用于二进制八位位组的
“00100000”(ABNF:%X20),其在US-ASCII对应于空间
字符(SP)。
Answer 3:
由于网址有严格的语法规则,如/
是一个特殊的路径分隔符,空格没有被允许在一个URL并不必是ASCII的某个子集的所有字符。 嵌入URL中的任意字符不管这些限制,字节可以是百分之编码。 字节x20
代表了ASCII编码(和大多数其他编码)的空间,因此, %20
是它的URL编码版本。