किसी URL में खंड पहचानकर्ता के लिए मान्य वर्णों की सूची?


86

मैं इस आदमी के समान अपने वेब ऐप में AJAX घटनाओं के लिए एक पर्मलिंक बनाने के लिए टुकड़ा पहचानकर्ता का उपयोग कर रहा हूं । कुछ इस तरह:

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

मैंने काफी खोज की है, लेकिन खंडित idenitifer के लिए मान्य वर्णों की सूची नहीं मिल सकती है। W3C कल्पना कुछ भी प्रदान नहीं करता है।

क्या मुझे सामान्य रूप से URL के समान वर्णों को एनकोड करना होगा?

कहीं भी इस पर कोई अच्छी जानकारी नहीं लगती है।

जवाबों:


98

आरएफसी 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, तो क्या इसका मतलब है कि एक "%" को हर जगह अनुमति नहीं है, लेकिन केवल तब अनुमति दी जाती है जब दो वैध वर्ण इसका पालन करते हैं?
पचेरियर

1
@Pacerier हाँ, %केवल भागने के पात्र के रूप में अनुमत है। %25एक एकल सांकेतिक शब्दों में बदलना करने के लिए उपयोग करें %
जियोले

1
बैक / फ़ॉर्वर्ड बटन खंडित पहचानकर्ताओं के साथ काम नहीं करता है, जो कि RFC को एक वैध चरित्र बताते हुए कॉलन है।
विंस

वाह! शायद यह बताना आसान होगा कि अस्सी के पात्रों का क्या उपयोग नहीं किया जा सकता है!
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

तो, संयुक्त, टुकड़ा नहीं कर सकते हैं शामिल #, एक कच्चे %, ^, [, ], {, }, \, ", <और >आरएफसी के अनुसार।


धन्यवाद। Artefacto का जवाब दिया क्योंकि वह एक बाल तेजी से था, लेकिन आपने प्रतिक्रिया के लिए +1 दिया।
sohtimsso1970

2
मुझे लगता है कि आप गैर-मुद्रण योग्य ASCII वर्ण और गैर- ascii वर्ण याद कर रहे हैं।
आर्टिफैक्टो

2
लगता है कि आप भूल गया VERTICAL BAR (|)और GRAVE ACCENT (`)और SPACE ( )नहीं-सूची में। तो "#%< >[\]^`{|}
नॉट

2

एक अन्य RFC की बात है: RFC-1738

URL schemeparts for ip based protocols:
HTTP

httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]
hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search         = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.