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
Url 为什么不是';t%(百分比)在RFC 3986(URI语法)中是否认为是保留字符?_Url_Escaping_Uri_Percent Encoding_Rfc3986 - Fatal编程技术网

Url 为什么不是';t%(百分比)在RFC 3986(URI语法)中是否认为是保留字符?

Url 为什么不是';t%(百分比)在RFC 3986(URI语法)中是否认为是保留字符?,url,escaping,uri,percent-encoding,rfc3986,Url,Escaping,Uri,Percent Encoding,Rfc3986,显然%需要编码。报告说: 因为百分比(“%”)字符用作 百分比编码的八位字节,必须将其百分比编码为“%25” 在URI中用作数据的八位字节 为什么它不也列为保留字符?显然,它是保留的,以表示URI上下文中的某些特殊内容。保留字符旨在用作URI不同部分之间的分隔符。百分号不用于此-不能用于此-因为它用于百分号编码 指出有一个单独的“无保留”字符列表,百分比符号也不是其中之一,这可能有助于澄清问题: unreserved = ALPHA / DIGIT / "-" / "." / "_

显然%需要编码。报告说:

因为百分比(“%”)字符用作 百分比编码的八位字节,必须将其百分比编码为“%25” 在URI中用作数据的八位字节

为什么它不也列为保留字符?显然,它是保留的,以表示URI上下文中的某些特殊内容。

保留字符旨在用作URI不同部分之间的分隔符。百分号不用于此-不能用于此-因为它用于百分号编码

指出有一个单独的“无保留”字符列表,百分比符号也不是其中之一,这可能有助于澄清问题:

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

(从第12页底部开始)。换句话说,在URI的上下文中,“reserved”的含义比预期的更为具体。:-)

百分号已通过参与语法规则
pct-encoded
而保留。此外,这一段似乎在这个问题上很有启发性:

URI由一组有限的字符组成,这些字符由数字、字母和一些图形符号组成。这些字符的保留子集可用于分隔URI中的语法组件,而其余字符(包括未保留集和不充当分隔符的保留字符)定义每个组件的标识数据


这表明百分比符号本身确实是为百分比编码保留的(因为它没有在URI中定义语法组件)。您最初的解释是正确的,我认为这只是一个语义问题。

保留字符是在URI中具有某种特殊含义的字符,因此,如果它们用于非特定用途,则需要以某种方式转义

百分比字符在URI中没有特殊含义——这使得它成为转义/编码字符的一个好选择

它被用于编码的事实是百分比本身需要通过百分比编码进行转义的唯一原因


这类似于字符转义,其中反斜杠
\
本身必须转义
\
,只是因为它是在
\t
\n

中选择进行初始转义的字符。。。如果在URI中,百分比字符用于表示其他字符,并且仅允许用于该目的,则对我而言,这在URI中具有特殊意义,否?:-)@John-No.:-)如果在URI中使用百分比字符,则表示百分比字符,就像
a
表示
a
一样。它在URI中不是特殊的,也不是保留的。正是转义/编码的行为使它变得特别。假设选择了
~
作为转义字符。然后,
&
仍然必须转义,但
%
可以正常使用;这就是你如何判断
&
有一个特殊的含义,但是
%
没有——而且
~
必须被转义,因为它对于编码而不是URIHm是特殊的。但是所有的URI都使用百分比编码,事实上必须使用百分比编码,对吗?@John即使是这样,
%
是作为编码方案的一部分保留的,而不是在URI方案中保留的。我想我不知道“保留”和“方案”是什么意思:)