कुछ वर्ण यूआरएल का हिस्सा नहीं हो सकते (उदाहरण के लिए, स्पेस) और कुछ अन्य वर्णों के लिए यूआरएल का खास मतलब हो सकता है. एचटीएमएल फ़ॉर्म में, नाम को वैल्यू से अलग करने के लिए =
वर्ण का इस्तेमाल किया जाता है. इस समस्या से निपटने के लिए यूआरआई सामान्य सिंटैक्स, यूआरएल एन्कोडिंग का इस्तेमाल करता है. वहीं, ऐसे सभी वर्णों के लिए प्रतिशत एन्कोडिंग लागू करने के बजाय, एचटीएमएल फ़ॉर्म कुछ और विकल्प तय करते हैं.
उदाहरण के लिए, किसी स्ट्रिंग में मौजूद स्पेस को या तो %20
से एन्कोड किया जाता है या उसे प्लस के निशान (+
) से बदला जाता है. अगर आपको पाइप वर्ण (|
) को सेपरेटर के तौर पर इस्तेमाल करना है, तो पाइप को %7C
के तौर पर कोड में बदलना न भूलें. किसी स्ट्रिंग के कॉमा को %2C
के तौर पर एन्कोड किया जाना चाहिए.
हमारा सुझाव है कि आप अपने यूआरएल को अपने-आप कोड में बदलने के लिए, अपने प्लैटफ़ॉर्म की सामान्य यूआरएल बिल्डिंग लाइब्रेरी का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि यूआरएल, आपके प्लैटफ़ॉर्म के लिए सही तरीके से एस्केप किए गए हैं.
एक मान्य URL बनाना
आपको लग सकता है कि "मान्य" यूआरएल खुद दिखता है, लेकिन ऐसा नहीं है. उदाहरण के लिए, किसी ब्राउज़र में पता बार में डाले गए यूआरएल में विशेष वर्ण (जैसे, "上海+中國"
) हो सकते हैं. ट्रांसमिशन से पहले, ब्राउज़र को उन वर्णों का अंदरूनी तौर पर किसी अन्य एन्कोडिंग में अनुवाद करना होता है.
उसी टोकन की मदद से, UTF-8 इनपुट जनरेट या स्वीकार करने वाला कोई भी कोड, UTF-8 वर्णों वाले यूआरएल को "मान्य" माने जा सकता है. हालांकि, उन्हें किसी वेब सर्वर पर भेजने से पहले उन वर्णों का अनुवाद करना होगा.
इस प्रक्रिया को
यूआरएल-एन्कोडिंग या प्रतिशत-एन्कोडिंग कहा जाता है.
खास वर्ण
हम विशेष वर्णों का अनुवाद करते हैं, क्योंकि सभी यूआरएल को यूनिफ़ॉर्म रिसॉर्स आइडेंटिफ़ायर (यूआरआई) में दिए गए सिंटैक्स के मुताबिक होना चाहिए. इसका मतलब है कि यूआरएल में ASCII वर्णों का सिर्फ़ एक खास सबसेट शामिल होना चाहिए: जाने-पहचाने अक्षर और अंक, और कुछ रिज़र्व किए गए वर्ण जिनका इस्तेमाल यूआरएल में कंट्रोल वर्णों के तौर पर किया जाता है. इस टेबल में इन वर्णों की खास जानकारी होती है:
सेट करें | वर्ण | यूआरएल का इस्तेमाल |
---|---|---|
अक्षर और अंक | A b c d e f g h i j j l l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q S T U V W X Y Z 0 2 3 3 3 D S T U W X Y Z Z 0 2 3 3 S D F C S F C | टेक्स्ट स्ट्रिंग, स्कीम यूसेज (http ), पोर्ट (8080 ), वगैरह. |
गैर-आरक्षित | - _ . ~ | टेक्स्ट स्ट्रिंग |
बुकिंग की गई | ! * ' ( ) ; : @ और = + $ , / ? % # [ ] | वर्णों और/या टेक्स्ट स्ट्रिंग को कंट्रोल करें |
मान्य यूआरएल बनाते समय, आपको यह पक्का करना होगा कि उसमें सिर्फ़ वे वर्ण शामिल हों जो मान्य यूआरएल वर्णों की टेबल में दिखते हैं. वर्णों के इस सेट का इस्तेमाल करने के लिए किसी यूआरएल को बनाने में आम तौर पर दो समस्याएं आती हैं, एक गड़बड़ी और एक बदलाव:
- जो वर्ण आप हैंडल करना चाहते हैं वे ऊपर दिए गए सेट के बाहर मौजूद हैं. उदाहरण के लिए,
上海+中國
जैसी विदेशी भाषाओं के वर्णों को, ऊपर दिए गए वर्णों का इस्तेमाल करके कोड में बदलना होगा. लोकप्रिय कन्वेंशन में, स्पेस (जो यूआरएल में शामिल नहीं किए जा सकते) को अक्सर प्लस वर्ण'+'
का इस्तेमाल करके भी दिखाया जाता है. - ऊपर दिए गए वर्णों में वर्णों का इस्तेमाल रिज़र्व किए गए वर्णों के रूप में किया जाता है. हालांकि, इनका इस्तेमाल
लिटरल तौर पर किया जाना चाहिए.
उदाहरण के लिए, क्वेरी स्ट्रिंग की शुरुआत को यह बताने के लिए
?
में यूआरएल का इस्तेमाल किया जाता है, अगर आपको "? "Mysterion" स्ट्रिंग का इस्तेमाल करना है, तो आपको'?'
वर्ण को कोड में बदलना होगा.
यूआरएल-एन्कोड किए जाने वाले सभी वर्णों को '%'
वर्ण और उनके UTF-8 वर्णों से संबंधित दो-वर्ण वाले हेक्स मान का इस्तेमाल करके एन्कोड किया जाता है. उदाहरण के लिए, UTF-8 में 上海+中國
को यूआरएल के रूप में %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B
के रूप में कोड में बदला जाएगा. स्ट्रिंग ? and the Mysterians
को यूआरएल के हिसाब से %3F+and+the+Mysterians
या %3F%20and%20the%20Mysterians
के तौर पर कोड में बदला जाएगा.
ऐसे सामान्य वर्ण जिन्हें कोड में बदलने की ज़रूरत है
यहां कुछ ऐसे सामान्य वर्ण दिए गए हैं जिन्हें कोड में बदलना ज़रूरी है:
असुरक्षित वर्ण | कोड में बदला गया मान |
---|---|
स्पेस | %20 |
" | %22 |
< | %3C |
> | %3E |
# | %23 |
% | %25 |
| | %7C |
उपयोगकर्ता इनपुट से मिलने वाले यूआरएल को बदलना कभी-कभी मुश्किल हो जाता है. उदाहरण के लिए, उपयोगकर्ता "पांचवां और मुख्य संत" के रूप में पता डाल सकता है. आम तौर पर, आपको हर यूआरएल को लिटरल वर्ण के तौर पर देखते हुए अपना यूआरएल बनाना चाहिए.
इसके अलावा, Google Maps Platform की सभी वेब सेवाओं और स्टैटिक वेब एपीआई के लिए, यूआरएल की सीमा 8,192 वर्ण है. ज़्यादातर सेवाओं के लिए, इस वर्ण सीमा का इस्तेमाल बहुत कम होता है. ध्यान दें कि कुछ सेवाओं में कई ऐसे पैरामीटर होते हैं जिनकी वजह से यूआरएल लंबे हो सकते हैं.