URL片段(#)允许使用字符

时间:2014-09-28 19:37:45

标签: url fragment-identifier

在互联网上进行一些挖掘后,我无法找到一个很好的答案,可以找到我可能用于URL片段的字符。我正在编写一个利用URL片段的javascript脚本。

我希望通过不让它看起来太复杂来使URL对眼睛友好。所以我想知道我是否可以使用像':,?,&这样的字符。要么 !'在URL片段中仍然有效。

我的网址片段应包含以下值:

  • 顺序逐
    • ID
    • desc asc
  • 路径
    • /该/充满/转义/路径/此处/

2 个答案:

答案 0 :(得分:20)

TL;博士

片段标识符组件可以包含:

  • 0 - 9
  • a - z
  • A - Z
  • ? / : @ - . _ ~ ! {{ 1}} $ & ' ( ) * + , ;
  • 百分比编码字符(一个=后跟两个十六进制数字)

我怎样才能找到这个?

URI标准为STD 66,目前映射到RFC 3986

在本文档中,您将找到需要了解的所有内容。

fragment identifier component is defined in section 3.5

  

%

这意味着片段可以不包含任何内容或(任何组合)

  • pchar
  • 中定义的字符
  • the /
  • fragment = *( pchar / "/" / "?" )

?

的定义

请参阅appendix A.了解如何定义 pchar

  

pchar

所以这会增加

  • unreserved
  • 中定义的字符
  • pct-encoded
  • 中定义的字符
  • sub-delims中定义的字符
  • pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
  • the @

:

的定义

现在检查未保留的定义方式:

  

unreserved

这会增加

  • ALPHA
  • 中定义的字符
  • DIGIT
  • 中定义的字符
  • unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
  • -
  • .
  • _

~ALPHA

的定义

检查ALPHA和DIGIT的定义方式。它们未在附录中列出,因为它们来自core ABNF rulesexplained in section 1.3也是如此:

  

ALPHA(字母),[...] DIGIT(十进制数字)[...]

所以这会增加

  • DIGIT - az - A
  • Z - 0

9

的定义

检查 pct-encoded 的定义方式:

  

pct-encoded

这允许任何percent-encoded character

pct-encoded = "%" HEXDIG HEXDIG

的定义

检查 sub-delims 的定义方式:

  

sub-delims

这会增加

  • sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
  • !
  • $
  • &
  • '
  • (
  • )
  • *
  • +
  • ,
  • ;

答案 1 :(得分:0)

找到有效字符有点棘手,但如果你阅读得足够深,上面评论的文件确实包含了这些信息。

可用字符如下:

  • "!"
  • " $"
  • "&安培;"
  • "'"
  • "("
  • &#34)"
  • " *"
  • " +"
  • ""
  • &#34 ;;"
  • " ="
  • ""
  • " @"
  • ALPHA
  • DIGIT
  • " - "
  • ""
  • " _"
  • "〜"
  • "%" HEXDIG HEXDIG
  • ":"
  • " /"