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