URL의 조각 식별자에 유효한 문자 목록?


86

이 사람과 비슷한 내 웹 앱에서 AJAX 이벤트에 대한 영구 링크를 만들기 위해 조각 식별자를 사용하고 있습니다. 다음과 같은 것 :

http://www.myapp.com/calendar#filter:year/2010/month/5

꽤 많은 검색을 수행했지만 조각 idenitifer에 대한 유효한 문자 목록을 찾을 수 없습니다. W3C 사양은 아무것도 제공하지 않습니다.

일반적으로 URL과 동일한 문자를 인코딩해야합니까?

이것에 대한 좋은 정보가 어디에도없는 것 같습니다.

답변:


98

RFC 3986을 참조하십시오 .

fragment    = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"    
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="

당신이 사용할 수 있도록 !, $, &, ', (, ), *, +, ,, ;, =, 뭔가 매칭 %[0-9a-fA-F]{2}, 뭔가 매칭 [a-zA-Z0-9], -, ., _, ~, :, @, /, 및?


완벽합니다. RFC에서 찾고 있었지만 올바른 절을 찾을 수 없었습니다. 감사.
sohtimsso1970

1
@Artefacto, "%"가 모든 곳에서 허용 되지 않고 두 개의 유효한 문자가 뒤에 올 때만 허용된다는 의미입니까?
Pacerier

1
@Pacerier yes, %이스케이프 문자로만 허용됩니다. 사용 %25하나를 인코딩 %.
gioele

1
뒤로 / 앞으로 버튼은 RFC가 유효한 문자라고 명시 했음에도 불구하고 콜론이있는 조각 식별자와 함께 작동하지 않습니다.
Vince

와! 어떤 ASCII 문자를 사용할 수 없는지 확인 하는 것이 더 쉬울 것입니다 !
e2-e4

30

http://tools.ietf.org/html/rfc3986#section-3.5 :

fragment    = *( pchar / "/" / "?" )

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="
pct-encoded   = "%" HEXDIG HEXDIG

따라서, 결합 단편은 없습니다 포함 #원시, %, ^, [, ], {, }, \, ", <>은 RFC에 따라.


감사. Artefacto는 머리카락이 더 빠르기 때문에 대답했지만 대답에 +1을주었습니다.
sohtimsso1970

2
인쇄 할 수없는 ASCII 문자와 ASCII가 아닌 문자가 누락되었다고 가정합니다.
Artefacto

2
당신이 잊어 버린 것 같다 VERTICAL BAR (|)GRAVE ACCENT (`)SPACE ( )되지 목록입니다. 따라서 비 목록에있는 인쇄 가능한 (7 비트) US-ASCII 문자의 전체 목록은 다음과 같습니다."#%< >[\]^`{|}
GitaarLAB

2

다른 RFC는 이에 대해 말합니다. RFC-1738

URL schemeparts for ip based protocols:
HTTP

httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]
hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search         = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.