कुछ वर्ण, यूआरएल का हिस्सा नहीं हो सकते. उदाहरण के लिए, स्पेस. इसके अलावा, कुछ अन्य वर्णों का यूआरएल में खास मतलब होता है. एचटीएमएल फ़ॉर्म में, = वर्ण का इस्तेमाल किसी नाम को वैल्यू से अलग करने के लिए किया जाता है. यूआरआई के सामान्य सिंटैक्स में, इस समस्या से निपटने के लिए यूआरएल एन्कोडिंग का इस्तेमाल किया जाता है. वहीं, एचटीएमएल फ़ॉर्म में, ऐसे सभी वर्णों के लिए प्रतिशत एन्कोडिंग लागू करने के बजाय, कुछ अन्य वर्णों का इस्तेमाल किया जाता है.
उदाहरण के लिए, किसी स्ट्रिंग में मौजूद स्पेस को %20 के साथ कोड में बदला जाता है या प्लस (+) के चिह्न से बदल दिया जाता है. अगर सेपरेटर के तौर पर पाइप वर्ण (|) का इस्तेमाल किया जाता है, तो पाइप को %7C के तौर पर कोड में बदलना न भूलें. किसी स्ट्रिंग में मौजूद कॉमा को %2C के तौर पर कोड में बदला जाना चाहिए.
हमारा सुझाव है कि यूआरएल को अपने-आप कोड में बदलने के लिए, अपने प्लैटफ़ॉर्म की सामान्य यूआरएल बनाने वाली लाइब्रेरी का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि आपके प्लैटफ़ॉर्म के लिए यूआरएल को सही तरीके से एस्केप किया गया हो.
मान्य यूआरएल बनाना
आपको लग सकता है कि "मान्य" यूआरएल की पहचान करना आसान है, लेकिन ऐसा नहीं है. उदाहरण के लिए, ब्राउज़र में पता बार में डाला गया कोई यूआरएल, खास वर्णों (जैसे, "上海+中國") वाला हो सकता है. ब्राउज़र को इन वर्णों को ट्रांसमिट करने से पहले, इंटरनली किसी दूसरी एन्कोडिंग में बदलना होता है.
इसी तरह, UTF-8 इनपुट जनरेट करने या स्वीकार करने वाला कोई भी कोड, UTF-8 वर्णों वाले यूआरएल को "मान्य" मान सकता है. हालांकि, उसे वेब सर्वर पर भेजने से पहले, इन वर्णों को भी बदलना होगा.
इस प्रोसेस को
यूआरएल-एन्कोडिंग या प्रतिशत-एन्कोडिंग कहा जाता है.
विशेष वर्ण
हमें खास वर्णों को बदलना होगा, क्योंकि सभी यूआरएल को यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (यूआरआई) की खास जानकारी में बताए गए सिंटैक्स के मुताबिक होना चाहिए. इसका मतलब है कि यूआरएल में सिर्फ़ ASCII वर्णों का खास सबसेट होना चाहिए. जैसे, जाने-पहचाने अल्फ़ान्यूमेरिक सिंबल और यूआरएल में कंट्रोल वर्णों के तौर पर इस्तेमाल किए जाने वाले कुछ रिज़र्व वर्ण. इस टेबल में इन वर्णों के बारे में बताया गया है:
| सेट करें | वर्ण | यूआरएल का इस्तेमाल |
|---|---|---|
| अल्फ़ान्यूमेरिक | a b c d e f g h i j k 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 R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 | टेक्स्ट स्ट्रिंग, स्कीम का इस्तेमाल (http), पोर्ट (8080) वगैरह. |
| गैर-आरक्षित | - _ . ~ | टेक्स्ट स्ट्रिंग |
| आरक्षित | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | कंट्रोल वर्ण और/या टेक्स्ट स्ट्रिंग |
मान्य यूआरएल बनाते समय, आपको यह पक्का करना होगा कि इसमें सिर्फ़ वे वर्ण शामिल हों जो टेबल में दिखाए गए हैं. आम तौर पर, यूआरएल को वर्णों के इस सेट के मुताबिक बनाने पर दो समस्याएं आती हैं. एक समस्या, वर्णों को शामिल न करने से जुड़ी होती है और दूसरी, वर्णों को बदलने से जुड़ी होती है:
- जिन वर्णों को आपको हैंडल करना है वे ऊपर दिए गए सेट से बाहर हैं. उदाहरण के लिए, `शंघाई+चीन` जैसी विदेशी भाषाओं के वर्णों को ऊपर दिए गए वर्णों का इस्तेमाल करके कोड में बदलना होगा.
上海+中國आम तौर पर, स्पेस (जिन्हें यूआरएल में शामिल नहीं किया जा सकता) को प्लस'+'वर्ण का इस्तेमाल करके भी दिखाया जाता है. - ऊपर दिए गए सेट में वर्ण, रिज़र्व वर्णों के तौर पर मौजूद हैं,
लेकिन उन्हें लिटरल तौर पर इस्तेमाल करने की ज़रूरत है.
उदाहरण के लिए, यूआरएल में
?का इस्तेमाल क्वेरी स्ट्रिंग की शुरुआत दिखाने के लिए किया जाता है. अगर आपको "? and the Mysterions" स्ट्रिंग का इस्तेमाल करना है, तो आपको'?'वर्ण को कोड में बदलना होगा.
यूआरएल-एन्कोड किए जाने वाले सभी वर्णों को '%' वर्ण और उनके 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 |
कभी-कभी, उपयोगकर्ता के इनपुट से मिले यूआरएल को बदलना मुश्किल होता है. उदाहरण के लिए, कोई उपयोगकर्ता "5th&Main St." के तौर पर पता डाल सकता है. आम तौर पर, आपको यूआरएल को उसके हिस्सों से बनाना चाहिए. साथ ही, उपयोगकर्ता के किसी भी इनपुट को लिटरल वर्णों के तौर पर मानना चाहिए.
इसके अलावा, Google Maps Platform की सभी वेब सेवाओं और स्टैटिक वेब एपीआई के लिए, यूआरएल में ज़्यादा से ज़्यादा 16,384 वर्ण हो सकते हैं. ज़्यादातर सेवाओं के लिए, वर्णों की इस सीमा तक पहुंचने की नौबत कम ही आती है. हालांकि, ध्यान दें कि कुछ सेवाओं में कई पैरामीटर होते हैं. इस वजह से, यूआरएल लंबे हो सकते हैं.