STD 66,百分比编码:
\n\n\n\n\n当八位字节的对应字符超出允许的集合或用作组件的分隔符或在组件内时,百分比编码机制用于表示组件中的数据八位字节。
\n
所以百分比编码是一种转义机制:某些字符在 URI 组件中具有特殊含义(\xe2\x86\x92 它们被保留)。如果您想使用这样一个没有特殊含义的字符,可以对它进行百分比编码。
\n\n非保留字符(如a, b, c, \xe2\x80\xa6)始终可以直接使用,但 it\xe2\x80\x99s 也允许对它们进行百分比编码。这样的 URI 是等效的:
\n\n\n在将非保留字符替换为相应的百分比编码 US-ASCII 八位字节方面有所不同的 URI 是等效的:它们标识相同的资源。
\n
为什么它\xe2\x80\x99s首先允许对非保留字符进行百分比编码?过时的 RFC 2396包含(我加粗):
\n\n\n\n\n可以在不更改 URI 语义的情况下转义非保留字符,但除非在不允许出现未转义字符的上下文中使用 URI,否则不应这样做。
\n
我无法\xe2\x80\x99想出这样一个“上下文”的例子,但这句话表明可能有一些。
\n\n另外,也许有些人/实现喜欢简单地对所有内容进行百分比编码(分隔符等除外),因此他们不必检查相应组件中是否/哪些字符需要百分比编码。
\n