Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';%的来源20';在URL中用作空格_Url_Encoding - Fatal编程技术网

为什么';%的来源20';在URL中用作空格

为什么';%的来源20';在URL中用作空格,url,encoding,Url,Encoding,我很想知道为什么在URL中使用“%20”作为空间,特别是为什么使用“%20”以及为什么我们首先需要它。它被称为。某些字符不能在URI中(例如,因为它表示URL片段),因此它们可以用(变成%23)字符表示 以下是同一篇文章的摘录: 当保留集中的字符(“保留字符”)已 特定上下文中的特殊含义(“保留目的”),以及URI scheme说有必要将该字符用于其他字符 则必须对字符进行百分比编码。 对保留字符进行百分比编码涉及转换 字符转换为其对应的ASCII字节值,然后 将该值表示为一对十六进制数字。数字

我很想知道为什么在URL中使用“%20”作为空间,特别是为什么使用“%20”以及为什么我们首先需要它。

它被称为。某些字符不能在URI中(例如
,因为它表示URL片段),因此它们可以用(
变成
%23
)字符表示

以下是同一篇文章的摘录:

当保留集中的字符(“保留字符”)已 特定上下文中的特殊含义(“保留目的”),以及URI scheme说有必要将该字符用于其他字符 则必须对字符进行百分比编码。 对保留字符进行百分比编码涉及转换 字符转换为其对应的ASCII字节值,然后 将该值表示为一对十六进制数字。数字, 前面有用作转义字符的百分号(“%”), 然后在URI中使用,以代替保留字符。(为了 非ASCII字符,通常在 UTF-8,然后每个字节值如上所示。)

空格字符的字符代码为
32

> ' '.charCodeAt(0)
32
base-16中的
20

> ' '.charCodeAt(0).toString(16)
"20"

在它前面加一个百分号,你会得到
%20

它使用百分号编码。您可以看到RFC的一部分

百分比编码机制用于表示数据中的八位字节 当该八位字节的对应字符位于 允许的集合或正在用作的分隔符,或在
组成部分。百分比编码八位字节编码为字符
三元组,由百分比字符“%”后跟两个
表示该八位字节数值的十六进制数字。对于
例如,“%20”是二进制八位字节的编码百分比
“00100000”(ABNF:%x20),在US-ASCII中对应于空格
字符(SP)


因为URL有严格的语法规则,比如
/
是一个特殊的路径分隔符,URL中不允许有空格,所有字符都必须是ASCII的某个子集。要在URL中嵌入任意字符而不受这些限制,可以对字节进行百分比编码。字节
x20
表示ASCII编码(以及大多数其他编码)中的一个空格,因此
%20
是它的URL编码版本

因此,在互联网文件名中使用空格是否完全合法,只要它们是正确的百分比编码?当然,这就是百分比编码的目的。