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

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

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

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

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

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

खास वर्ण

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

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