如何在URL中的片段标识符中编码空间

Des*_*ume 5 url syntax rfc fragment-identifier

在URL中的片段标识符中,空格是否应该%20像路径中+一样编码,或者像查询字符串中那样编码?

nwe*_*hof 6

对于 HTML 页面,它们应该是百分比编码的。

根据RFC 2396RFC 3986RFC 7320,片段标识符的格式取决于媒体类型。来自 RFC 2396 和 RFC 3986:

片段标识符的语义由可能由对主要资源的检索操作产生的表示集来定义。因此,片段的格式和分辨率取决于可能检索的表示的媒体类型 [RFC2046],即使仅在取消引用 URI 时才执行此类检索。

来自 RFC 7320:

媒体类型定义(根据[RFC6838])应该指定与其一起使用的片段标识符语法;其他规范不得在片段标识符中定义结构,除非它们明确定义了一个供媒体类型定义重用的结构。

HTML5 规范仅指定百分比编码

文档的指示部分是片段标识符(如果有)标识的部分。片段标识符在将其映射到特定 DOM 节点方面的语义由定义文档使用的 MIME 类型的规范定义(例如,XML MIME 类型的片段标识符的处理是 RFC7303 的责任)。

对于 HTML 文档(和 HTML MIME 类型),必须遵循以下处理模型来确定文档的指示部分是什么。

  1. 将 URL 解析器算法应用于 URL,并令 fragid 为解析结果 URL 的片段组件。
  1. 如果fragid是空字符串,则文档的指示部分是文档的顶部;在此停止算法。
  1. 令 fragid 字节为百分比解码 fragid 的结果。
  1. 令已解码的 fragid 为将 UTF-8 解码器算法应用于 fragid 字节的结果。如果 UTF-8 解码器发出解码器错误,则中止解码器并跳转到标记为“无解码的 fragid”的步骤。
  2. [...]

(强调我的)

对于 XML 文档,RFC 7303指定了XPointer 框架的语法,该语法还要求对保留的 URI 字符进行百分比编码

其他媒体类型可能有不同的规则。