URL को कैसे एन्कोड और डीकोड करें

· 7 मिनट पढ़ने का समय

यदि आपने कभी URL में %20 देखा है जहाँ एक स्पेस होना चाहिए, या %C3%A9 जहाँ एक उच्चारण वाला अक्षर होना चाहिए, तो आपने URL एन्कोडिंग का सामना किया है। यह वेब के काम करने का एक मौलिक हिस्सा है, और इसे समझने से आपको टूटे हुए लिंक, API समस्याएं और फॉर्म सबमिशन डिबग करने में मदद मिलती है। ब्राउज़र-आधारित एन्कोडर पूरा काम स्थानीय रूप से संभालता है, आपके डेटा को सर्वर पर अपलोड किए बिना।

URL एन्कोडिंग क्या करती है

URL में केवल वर्णों का एक सीमित सेट सुरक्षित रूप से हो सकता है: अक्षर (A-Z, a-z), अंक (0-9), और कुछ विशेष वर्ण (-, _, ., ~)। बाकी सब कुछ (स्पेस, उच्चारण वाले वर्ण, इमोजी, और &, =, #, ? जैसे प्रतीक) को सुरक्षित प्रारूप में बदलना होगा।

URL एन्कोडिंग (जिसे प्रतिशत एन्कोडिंग भी कहा जाता है) असुरक्षित वर्णों को % के साथ बदलती है और उनके हेक्साडेसिमल बाइट मानों के साथ:

वर्णएन्कोडेड
स्पेस%20
&%26
=%3D
#%23
?%3F
/%2F
@%40
:%3A
+%2B
,%2C
;%3B
(नई लाइन)%0A
(टैब)%09

आपको URL एन्कोडिंग की कब आवश्यकता होती है

एन्कोड और डिकोड कैसे करें

  1. एन्कोड या डिकोड चुनें: दिशा का चयन करें। क्वेरी पैरामीटर के लिए encodeURIComponent या पूर्ण URL के लिए encodeURI चुनें।
  2. अपना इनपुट पेस्ट करें: टेक्स्ट या URL दर्ज करें। परिणाम तुरंत अपडेट होता है।
  3. आउटपुट कॉपी करें: अपने कोड, API अनुरोध या ब्राउज़र में परिणाम का उपयोग करें।

URL एन्कोडिंग का संक्षिप्त इतिहास

URL एन्कोडिंग को दिसंबर 1994 में RFC 1738 द्वारा मूल URL विनिर्देश के साथ परिभाषित किया गया था। RFC टिम बर्नर्स-ली (वेब के आविष्कारक) द्वारा IETF URI वर्किंग ग्रुप के इनपुट से लिखा गया था। मूल एन्कोडिंग योजना ASCII बाइट मानों का उपयोग करती थी: प्रत्येक आरक्षित या असुरक्षित वर्ण को % के बाद दो हेक्स अंकों के रूप में एन्कोड किया गया था।

एन्कोडिंग को कई बार अपडेट किया गया:

सबसे बड़ा परिवर्तन RFC 3986 में UTF-8 पर स्विच था। उससे पहले, एन्कोडेड URL केवल ASCII थे, और गैर-लैटिन वर्णों को वर्कअराउंड की आवश्यकता थी (डोमेन के लिए Punycode, अंतर्राष्ट्रीय पते के लिए IDN)। आज, URL में एक उच्चारण वाला «é» %C3%A9 (इसके दो UTF-8 बाइट्स) में एन्कोड होता है, न कि Latin-1 बाइट %E9 जो पुराने सिस्टम उत्पन्न करते।

encodeURI vs encodeURIComponent vs encodeURIFull

JavaScript में सूक्ष्म रूप से अलग व्यवहार के साथ तीन एन्कोडिंग फ़ंक्शन हैं:

फ़ंक्शनयह क्या एन्कोड करता हैयह क्या संरक्षित करता हैइसके लिए उपयोग करें
encodeURI()सभी असुरक्षित वर्णURL सिंटैक्स: : / ? & = #पूरे URL एन्कोड करना
encodeURIComponent()URL सिंटैक्स सहित सभी असुरक्षित वर्णकेवल A-Z a-z 0-9 - _ . ~ ! * ' ( )क्वेरी पैरामीटर मान
escape() (अप्रचलित)अधिकांश असुरक्षित वर्णकेवल Latin-1उपयोग न करें

Python में:

अन्य भाषाओं में:

भाषाघटक एन्कोडिंगपूर्ण URI एन्कोडिंग
JavaURLEncoder.encode() (+ के आसपास चेतावनी के साथ)URI.toASCIIString()
C#Uri.EscapeDataStringUri.EscapeUriString
RubyCGI.escape()URI.encode_www_form_component
PHPrawurlencode()urlencode() (नोट: %2B vs +)
Gourl.QueryEscape()url.PathEscape()
Rustpercent_encoding cratepercent_encoding crate

सामान्य चूक

काम किए हुए उदाहरण

इनपुटencodeURIencodeURIComponent
hello worldhello%20worldhello%20world
q=test&page=1q=test&page=1q%3Dtest%26page%3D1
https://x.com/pathhttps://x.com/pathhttps%3A%2F%2Fx.com%2Fpath
caf écaf%20%C3%A9caf%20%C3%A9
中文%E4%B8%AD%E6%96%87%E4%B8%AD%E6%96%87
100%100%25100%25
email@test.comemail@test.comemail%40test.com

सुझाव

गोपनीयता और गोपनीय URL

URL एन्कोडर और डिकोडर पूरी तरह से आपके ब्राउज़र में चलते हैं। आप जो URL पेस्ट करते हैं, मध्यवर्ती प्रसंस्करण, और एन्कोडेड/डिकोडेड आउटपुट सभी आपके डिवाइस पर रहते हैं। कुछ भी सर्वर पर अपलोड नहीं किया जाता, लॉग नहीं किया जाता, या किसी के साथ साझा नहीं किया जाता।

यह महत्वपूर्ण है क्योंकि URL में अक्सर अत्यंत संवेदनशील डेटा होता है: क्वेरी पैरामीटर में API कुंजी और टोकन, खाता पहुंच प्रदान करने वाले OAuth प्राधिकरण कोड, सत्र ID, एम्बेडेड क्रेडेंशियल के साथ निजी S3 बकेट के लिए हस्ताक्षरित URL, मैजिक-लिंक लॉगिन टोकन, पासवर्ड रीसेट URL, उत्पाद संरचना को प्रकट करने वाले आंतरिक व्यवस्थापक URL, सदस्यता रद्द करने वाले लिंक में ग्राहक ईमेल पते, फॉर्म सबमिशन में व्यक्तिगत डेटा। क्लाउड URL एन्कोडर प्रत्येक पेस्ट को लॉग करते हैं, कभी-कभी «सेवा सुधार» के लिए उन्हें बनाए रखते हैं, और वास्तविक लीक में शामिल रहे हैं जहाँ पेस्ट किए गए प्रमाणीकरण टोकन को लॉग की निगरानी करने वाले हमलावरों द्वारा निकाला गया। ब्राउज़र-आधारित एन्कोडर में शून्य एक्सपोज़र है: URL कभी आपकी मशीन नहीं छोड़ती।

ब्राउज़र-आधारित एन्कोडिंग पृष्ठ लोड होने के बाद ऑफ़लाइन भी काम करती है, हवाई जहाज़ों पर, इंटरनेट एक्सेस के बिना सुरक्षित वातावरण में, या कहीं भी जहाँ आप किसी तृतीय पक्ष सेवा में प्रमाणीकरण-वाहक URL नहीं पेस्ट कर सकते या नहीं पेस्ट करना चाहिए, URL को एन्कोड करने के लिए उपयोगी।

अक्सर पूछे जाने वाले प्रश्न

encodeURI और encodeURIComponent में क्या अंतर है?

encodeURI URL संरचना में मान्य वर्णों को संरक्षित करता है (स्लैश, कोलन, प्रश्न चिह्न)। encodeURIComponent अक्षरों, अंकों और कुछ सुरक्षित वर्णों को छोड़कर सब कुछ एन्कोड करता है। क्वेरी पैरामीटर मानों के लिए encodeURIComponent का उपयोग करें, पूर्ण URL के लिए encodeURI।

रिक्त स्थान %20 या + क्यों बन जाते हैं?

URL एन्कोडिंग में, रिक्त स्थान %20 बन जाते हैं। फ़ॉर्म डेटा में (application/x-www-form-urlencoded), रिक्त स्थान + बन जाते हैं। दोनों अपने संदर्भों में मान्य हैं, लेकिन %20 URL के लिए सार्वभौमिक मानक है।

क्या मुझे अपनी URL को मैन्युअल रूप से एन्कोड करना चाहिए?

अधिकांश मामलों में, आपकी भाषा या फ्रेमवर्क एन्कोडिंग को स्वचालित रूप से संभालते हैं। मैन्युअल एन्कोडिंग तब उपयोगी है जब आप हाथ से URL बना रहे हों, API अनुरोध डिबग कर रहे हों या विशेष वर्णों वाली क्वेरी स्ट्रिंग्स के साथ काम कर रहे हों।

क्या मेरा डेटा किसी सर्वर पर भेजा जाता है?

नहीं। सारी एन्कोडिंग और डीकोडिंग आपके ब्राउज़र में होती है।