在网址中的片段标识符中,空格应该像路径一样编码为%20
,还是像查询字符串一样编码为+
?
答案 0 :(得分:4)
对于HTML页面,它们应该是百分比编码。
根据RFC 2396,RFC 3986和RFC 7320,片段标识符的格式取决于媒体类型。来自RFC 2396和RFC 3986:
片段标识符的语义由set的定义 可能由于检索操作而导致的表示 主要资源。因此片段的格式和分辨率 取决于可能检索的媒体类型[RFC2046] 表示,即使这样的检索仅在执行时执行 URI被取消引用。
来自RFC 7320:
媒体类型定义(根据[RFC6838])应该指定片段 与它们一起使用的标识符语法;其他规格必须 不定义片段标识符中的结构,除非它们是 明确定义一个以供媒体类型定义重用。
HTML5规范only specifies percent encoding:
文档的指示部分是片段标识符(如果有)标识的部分。片段标识符在将其映射到特定DOM节点方面的语义由定义Document使用的MIME类型的规范定义(例如,XML MIME类型的片段标识符的处理是RFC7303的责任)。
对于HTML文档(和HTML MIME类型),必须遵循以下处理模型以确定文档的指示部分。
将URL解析器算法应用于URL,并将fragid作为生成的已解析URL的片段组件。
如果fragid是空字符串,则文档的指示部分是文档的顶部;在这里停止算法。
让fragid字节成为百分比解码碎片的结果。
令解码的fragid是将UTF-8解码器算法应用于fragid字节的结果。如果UTF-8解码器发出解码器错误,则中止解码器,而是跳转到标记为no decoding fragid的步骤。
- [...]
醇>
(强调我的)
对于XML文档,RFC 7303指定XPointer Framework的语法,对于保留的URI字符也是requires percent encoding。
其他媒体类型可能有不同的规则。