2011-01-12 14 views

cevap

69

bir path segment (/ ayrılmış bir yol içinde parça), sıfır ya da daha fazla aşağıdaki gibi tanımlanır PChar arasında içerebilir a - z, 0-9, -, ., _, ~, !, $, &, ', (, ), *, +, ,, ;, =, :, @, hem de iki onaltılık basamağı takip edilmelidir %. Diğer karakter/baytların percent-encoding kullanılarak kodlanması gerekir.

bu kelimenin tam anlamıyla bir yol kesimi olarak kullanılabilir toplam 79 karakter olmasına rağmen, bazı kullanıcı ajanlar, bu bazı karakterleri hem de (örneğin %7E yerine ~) kodlayan yoktur. ya Base 64 Encoding with URL and Filename Safe Alphabet (yani A - Z, a - z, 0 - 9, -, _) Bu yüzden birçok kullanım sadece 62 alfanümerik karakterler (- Z, a - - z, 09 yani A) bulunuyor.

+0

@Joey: Yol segmenti ayırıcısı olduğundan bir yol segmentinde değil. – Gumbo

+1

Tamam, OP'nin sadece tek bir segment değil, URI'nin tüm yolu hakkında konuştuğunu varsayıyordum. En azından, URI kısaltıcıları genellikle tek bir sement ile sınırlandırılmasının gerekmediği "http://domain.foo/ " şeklinde çalışır. – Joey

22

RFC 3986 göre yolu bileşen için geçerli karakterlerdir:

a-z A-Z 0-9 . - _ ~ ! $ & ' () * + , ; = : @ 

yanı sıra yüzde olarak kodlanmış karakterler ve tabii ki, eğik çizgi /. Örneğin, URI'ları tıklanabilir hale getirmek için ayrıştırmaya çalışan birçok uygulama (tarayıcılar değil), örneğin çok daha küçük bir karakter kümesini destekleyebildiğini aklınızdan çıkarmayın. Bu, çoğu girişimin de standardın izin verdiği tüm adresleri yakalamadığı e-posta adreslerini ayrıştırmakla benzer. , Z -

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

Yani temel A verilmiştir: Bir mutlak URI yolu

İlgili konular