यूआरएल को कोड में बदलना

कुछ वर्ण, यूआरएल का हिस्सा नहीं हो सकते. उदाहरण के लिए, स्पेस. इसके अलावा, कुछ अन्य वर्णों का यूआरएल में खास मतलब होता है. एचटीएमएल फ़ॉर्म में, नाम को वैल्यू से अलग करने के लिए = वर्ण का इस्तेमाल किया जाता है. यूआरआई के सामान्य सिंटैक्स में, इस समस्या को हल करने के लिए यूआरएल एन्कोडिंग का इस्तेमाल किया जाता है. वहीं, एचटीएमएल फ़ॉर्म में इस तरह के सभी वर्णों के लिए, प्रतिशत एन्कोडिंग लागू करने के बजाय कुछ और बदलाव किए जाते हैं.

उदाहरण के लिए, किसी स्ट्रिंग में मौजूद स्पेस को %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 वर्ण इस्तेमाल किए जा सकते हैं. ज़्यादातर सेवाओं के लिए, वर्णों की इस सीमा तक पहुंचने की ज़रूरत नहीं पड़ेगी. हालांकि, ध्यान दें कि कुछ सेवाओं में कई पैरामीटर होते हैं. इस वजह से, यूआरएल लंबे हो सकते हैं.