कुछ वर्ण किसी यूआरएल (उदाहरण के लिए, स्पेस) का हिस्सा नहीं हो सकते और कुछ दूसरे वर्णों का यूआरएल में कोई खास मतलब होता है. एचटीएमएल फ़ॉर्म में, =
वर्ण का इस्तेमाल किसी नाम को वैल्यू से अलग करने के लिए किया जाता है. यूआरआई जेनरिक सिंटैक्स, इस समस्या से निपटने के लिए यूआरएल एन्कोडिंग का इस्तेमाल करता है. वहीं, एचटीएमएल फ़ॉर्म, ऐसे सभी वर्णों के लिए प्रतिशत एन्कोडिंग लागू करने के बजाय, कुछ और विकल्प भी देते हैं.
उदाहरण के लिए, स्ट्रिंग के स्पेस या तो %20
से एन्कोड किए जाते हैं या उन्हें प्लस के निशान (+
) से बदल दिया जाता है. अगर पाइप कैरेक्टर (|
) को सेपरेटर के तौर पर इस्तेमाल किया जाता है, तो पक्का करें कि पाइप को %7C
के तौर पर कोड में बदला गया हो. स्ट्रिंग में कॉमा को %2C
के तौर पर एन्कोड किया जाना चाहिए.
हमारा सुझाव है कि आप अपने प्लैटफ़ॉर्म की सामान्य यूआरएल बिल्डिंग लाइब्रेरी का इस्तेमाल करें, ताकि आपके यूआरएल अपने-आप कोड में बदल जाएं. इससे यह पक्का हो सकेगा कि आपके प्लैटफ़ॉर्म पर यूआरएल सही तरीके से एस्केप किए जाएं.
मान्य यूआरएल बनाना
आपको लग सकता है कि "मान्य" यूआरएल अपने-आप दिख रहा है, लेकिन
ऐसा नहीं है. उदाहरण के लिए, किसी ब्राउज़र के पता बार में डाले गए यूआरएल में खास वर्ण हो सकते हैं (जैसे कि "上海+中國"
); ब्राउज़र को ट्रांसमिशन से पहले, उन वर्णों को किसी दूसरी एन्कोडिंग में अनुवाद करने की ज़रूरत होती है.
इसी टोकन से, UTF-8 इनपुट जनरेट करने वाला या स्वीकार करने वाला कोई भी कोड, UTF-8 वर्णों वाले यूआरएल को "मान्य" मान सकता है, लेकिन आपको वेब सर्वर पर भेजने से पहले उन वर्णों का अनुवाद भी करना होगा.
इस प्रोसेस को
यूआरएल-एन्कोडिंग या प्रतिशत-एन्कोडिंग कहा जाता है.
खास वर्ण
हमें खास वर्णों का अनुवाद करना होगा, क्योंकि सभी यूआरएल यूनिफ़ॉर्म रिसॉर्स आइडेंटिफ़ायर (यूआरआई) स्पेसिफ़िकेशन में बताए गए सिंटैक्स के मुताबिक होने चाहिए. इसका मतलब है कि यूआरएल में ASCII वर्णों का सिर्फ़ एक खास सबसेट शामिल होना चाहिए: यूआरएल में कंट्रोल वर्णों के तौर पर इस्तेमाल करने के लिए, जाने-पहचाने अक्षर और अंक, और कुछ रिज़र्व वर्ण. इस टेबल में इन वर्णों को शामिल किया गया है:
सेट करें | वर्ण | यूआरएल का इस्तेमाल |
---|---|---|
अक्षर और अंक दोनों शामिल हो सकते हैं | ए b c d x x x CANNOT TRANSLATE | टेक्स्ट स्ट्रिंग, स्कीम का इस्तेमाल (http ), पोर्ट (8080 ) वगैरह. |
गैर-आरक्षित | - _ . ~ | टेक्स्ट स्ट्रिंग |
बुकिंग की गई | ! * ' ( ) ; : @ & = + $ , / ? % # [ ] | कंट्रोल वर्ण और/या टेक्स्ट स्ट्रिंग |
मान्य यूआरएल बनाते समय, आपको यह पक्का करना होगा कि इसमें सिर्फ़ वही वर्ण शामिल हों जो मान्य यूआरएल वर्णों की खास जानकारी वाली टेबल में दिए गए हैं. वर्णों के इस सेट का इस्तेमाल करने के लिए यूआरएल तैयार करने से, आम तौर पर दो समस्याएं होती हैं. पहला: आइटम को हटा दें और दूसरा विकल्प:
- आपको जिन वर्णों को मैनेज करना है वे ऊपर दिए गए सेट से बाहर के होते हैं. उदाहरण के लिए,
上海+中國
जैसी विदेशी भाषा के वर्णों को ऊपर दिए गए वर्णों का इस्तेमाल करके कोड में बदलना होगा. लोकप्रिय तौर-तरीकों के मुताबिक, स्पेस को अक्सर प्लस'+'
वर्ण का इस्तेमाल करके दिखाया जाता है. यूआरएल में इनकी अनुमति नहीं है. - ऊपर दिए गए सेट में वर्ण, रिज़र्व किए गए वर्णों के तौर पर मौजूद होते हैं,
लेकिन लिटरल तौर पर इस्तेमाल किए जाने चाहिए.
उदाहरण के लिए, क्वेरी स्ट्रिंग की शुरुआत के लिए यूआरएल में
?
का इस्तेमाल किया जाता है. अगर आपको स्ट्रिंग "? और मिस्टीरियन" इस्तेमाल करनी है, तो आपको'?'
वर्ण को कोड में बदलना होगा.
यूआरएल के लिए कोड में बदलने के लिए सभी वर्णों को 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 से ज़्यादा वर्ण नहीं हो सकते. ज़्यादातर सेवाओं के लिए, इस वर्ण सीमा पर शायद ही कभी संपर्क किया जाए. हालांकि, ध्यान रखें कि कुछ सेवाओं में कई पैरामीटर होते हैं, जिनकी वजह से यूआरएल लंबे हो सकते हैं.