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

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

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

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

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

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

खास वर्ण

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

मान्य यूआरएल वर्णों की खास जानकारी
सेट करेंवर्णयूआरएल का इस्तेमाल
अक्षर और अंक दोनों शामिल हो सकते हैं ए बी सी डी ई एफ़ ग एच आई जे के एल मी एन ओ पी क्यू र स टी यू वी वा x वाय z ए बी सी डी ई एफ़ जी एच आई जे के एल M N O P Q R S T U V X 8 9 6 0 1 2 3 4 5 6 टेक्स्ट स्ट्रिंग, स्कीम का इस्तेमाल (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 की सभी वेब सेवाओं और स्टैटिक वेब एपीआई के लिए यूआरएल में ज़्यादा से ज़्यादा 16384 वर्ण हो सकते हैं. ज़्यादातर सेवाओं के लिए, इस वर्ण सीमा तक शायद ही कभी पहुंचा जाएगा. हालांकि, ध्यान दें कि कुछ सेवाओं में कई पैरामीटर होते हैं, जिनकी वजह से यूआरएल लंबे हो सकते हैं.