我很想知道为什么'%20'被用作网址中的空格,特别是为什么使用%20以及为什么我们首先需要它。
答案 0 :(得分:49)
它被称为percent encoding。某些字符不能在URI中(例如#
,因为它表示URL片段),因此它们用可以(#
变为%23
)的字符表示
以下是该文章的摘录:
当保留集中的字符(“保留字符”)具有时 特定上下文中的特殊含义(“保留目的”)和URI scheme表示有必要将该字符用于其他方面 目的,那么角色必须百分比编码。 保留字符的百分比编码涉及转换 字符到ASCII中的相应字节值然后 将该值表示为一对十六进制数字。数字, 以百分号(“%”)开头,用作转义字符, 然后在URI中使用它来代替保留字符。 (为一个 非ASCII字符,通常转换为其字节序列 UTF-8,然后每个字节值表示如上。)
空格字符的字符代码为32
:
> ' '.charCodeAt(0)
32
base-16中的20
:
> ' '.charCodeAt(0).toString(16)
"20"
在它前面加上一个百分号,你得到%20
。
答案 1 :(得分:0)
它使用百分比编码。您可以在Percent Encoding
中看到RFC的Uniform Resource Identifier (URI): Generic Syntax部分百分比编码机制用于表示a中的数据八位字节 当八位位组的相应字符在外面时的分量 允许设置或被用作
的分隔符或在其中 零件。百分比编码的八位字节被编码为字符
三元组,由百分号字符“%”后跟两个字组成 表示该八位字节数值的十六进制数字。对于
例如,“%20”是二进制八位字节的百分比编码 “00100000”(ABNF:%x20),其中US-ASCII对应于空格
字符(SP)。
答案 2 :(得分:0)
由于URL具有严格的语法规则,例如/
是特殊的路径分隔符,因此URL中不允许使用空格,并且所有字符都必须是ASCII的某个子集。要在URL中嵌入任意字符而不考虑这些限制,可以对字节进行百分比编码。字节x20
表示ASCII编码中的空格(以及大多数其他编码),因此%20
是它的URL编码版本。