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

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

उदाहरण के लिए, किसी स्ट्रिंग में मौजूद स्पेस को या तो %20 से एन्कोड किया जाता है या उन्हें प्लस के निशान (+) से बदला जाता है. अगर आप पाइप वर्ण (|) को सेपरेटर के तौर पर इस्तेमाल करते हैं, तो पाइप को %7C के तौर पर कोड करना न भूलें. किसी स्ट्रिंग में मौजूद कॉमा को, %2C के तौर पर कोड में बदला जाना चाहिए.

अपने प्लैटफ़ॉर्म के लिए यूआरएल को अपने-आप कोड में बदलने के लिए, अपने प्लैटफ़ॉर्म की सामान्य यूआरएल बिल्डिंग लाइब्रेरी का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि आपके प्लैटफ़ॉर्म के लिए यूआरएल सही तरीके से एस्केप किए गए हैं.

मान्य यूआरएल बनाना

आपको लग सकता है कि "मान्य" यूआरएल खुद से बनता है, लेकिन ऐसा नहीं है. उदाहरण के लिए, किसी ब्राउज़र में पता बार में डाले गए यूआरएल में विशेष वर्ण शामिल हो सकते हैं (उदाहरण के लिए, "上海+中國"). ऐसा होने पर, ब्राउज़र को ट्रांसमिशन से पहले उन वर्णों को अंदरूनी तौर पर, किसी दूसरी एन्कोडिंग में बदलना होगा. उसी टोकन से, UTF-8 इनपुट जनरेट या स्वीकार करने वाला कोई भी कोड, UTF-8 वर्णों वाले यूआरएल को "मान्य" मान सकता है. हालांकि, उसे वेब सर्वर पर भेजने से पहले उन वर्णों का अनुवाद भी करना होगा. इस प्रक्रिया को यूआरएल-एन्कोडिंग या प्रतिशत-एन्कोडिंग कहा जाता है.

खास वर्ण

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

मान्य यूआरएल वर्णों की खास जानकारी
सेट करेंवर्णयूआरएल का इस्तेमाल
अक्षर और अंक A मुहैया टेक्स्ट स्ट्रिंग, स्कीम यूसेज (http), पोर्ट (8080), वगैरह.
गैर-आरक्षित - _ . ~ टेक्स्ट स्ट्रिंग
बुकिंग की गई ! * ' ( ) ; : @ & = + $ , / ? % # [ ] कंट्रोल वर्ण और/या टेक्स्ट स्ट्रिंग

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

  • आपको जिन वर्णों को हैंडल करना है वे ऊपर दिए गए सेट के बाहर मौजूद हैं. उदाहरण के लिए, 上海+中國 जैसी विदेशी भाषाओं के वर्णों को, ऊपर दिए गए वर्णों का इस्तेमाल करके एन्कोड किया जाना चाहिए. लोकप्रिय कन्वेंशन में, स्पेस (जो यूआरएल में शामिल नहीं किए जा सकते) को अक्सर '+' वर्ण का इस्तेमाल करके भी दिखाया जाता है.
  • ऊपर दिए गए सेट में वर्ण रिज़र्व किए गए वर्णों के तौर पर मौजूद होते हैं. हालांकि, इनका इस्तेमाल लिटरल तौर पर किया जाना चाहिए. उदाहरण के लिए, ? का इस्तेमाल क्वेरी स्ट्रिंग की शुरुआत दिखाने के लिए यूआरएल में किया जाता है. अगर आपको स्ट्रिंग "? और Mysterations" का इस्तेमाल करना है, तो आपको '?' वर्ण को कोड में बदलना होगा.

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