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

时间:2013-12-19 10:43:42

标签: url syntax rfc fragment-identifier

在网址中的片段标识符中,空格应该像路径一样编码为%20,还是像查询字符串一样编码为+

1 个答案:

答案 0 :(得分:4)

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

根据RFC 2396RFC 3986RFC 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类型),必须遵循以下处理模型以确定文档的指示部分。

     
      
  1. 将URL解析器算法应用于URL,并将fragid作为生成的已解析URL的片段组件。

  2.   
  3. 如果fragid是空字符串,则文档的指示部分是文档的顶部;在这里停止算法。

  4.   
  5. 让fragid字节成为百分比解码碎片的结果。

  6.   
  7. 令解码的fragid是将UTF-8解码器算法应用于fragid字节的结果。如果UTF-8解码器发出解码器错误,则中止解码器,而是跳转到标记为no decoding fragid的步骤。

  8.   
  9. [...]
  10.   

(强调我的)

对于XML文档,RFC 7303指定XPointer Framework的语法,对于保留的URI字符也是requires percent encoding

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