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

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

उदाहरण के लिए, किसी स्ट्रिंग में मौजूद स्पेस को %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) वगैरह.
गैर-आरक्षित - _ . ~ टेक्स्ट स्ट्रिंग
बुकिंग की गई ! * ' ( ) ; : @ & = + $ , / ? % # [ ] कंट्रोल वर्ण और/या टेक्स्ट स्ट्रिंग

मान्य यूआरएल बनाते समय, आपको यह पक्का करना होगा कि उसमें सिर्फ़ वे वर्ण हों जो टेबल में दिखाए गए हैं. वर्णों के इस सेट का इस्तेमाल करने के लिए, यूआरएल को आम तौर पर, दो समस्याओं का सामना करना पड़ता है. पहला, कुछ वर्णों को शामिल न करना और दूसरा, कुछ वर्णों को बदलना:

  • आपको जिन वर्णों को हैंडल करना है वे ऊपर दिए गए सेट में शामिल नहीं हैं. उदाहरण के लिए, 上海+中國 जैसी विदेशी भाषाओं के वर्णों को ऊपर दिए गए वर्णों का इस्तेमाल करके एन्कोड करना ज़रूरी है. आम तौर पर, यूआरएल में स्पेस का इस्तेमाल नहीं किया जा सकता. हालांकि, अक्सर स्पेस को प्लस '+' वर्ण का इस्तेमाल करके दिखाया जाता है.
  • ऊपर दिए गए सेट में वर्ण, रिज़र्व किए गए वर्णों के तौर पर मौजूद होते हैं, लेकिन इनका इस्तेमाल लिटरल तौर पर किया जाना चाहिए. उदाहरण के लिए, यूआरएल में ? का इस्तेमाल, क्वेरी स्ट्रिंग की शुरुआत को दिखाने के लिए किया जाता है. अगर आपको स्ट्रिंग "? और 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 वर्ण ही इस्तेमाल किए जा सकते हैं. ज़्यादातर सेवाओं के लिए, वर्ण की यह सीमा शायद ही पूरी हो. हालांकि, ध्यान दें कि कुछ सेवाओं में कई पैरामीटर होते हैं, जिनकी वजह से यूआरएल लंबे हो सकते हैं.