'%20'为什么用作URL中的空格的原因

时间:2012-12-16 11:29:47

标签: url encoding web

我很想知道为什么'%20'被用作网址中的空格,特别是为什么使用%20以及为什么我们首先需要它。

3 个答案:

答案 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编码版本。