URL एन्कोडर
HTTP अनुरोधों, क्वेरी स्ट्रिंग्स, और फ़ॉर्म डेटा में भेजने के लिए सुरक्षित बनाने के लिए URLs या व्यक्तिगत URI घटकों में विशेष वर्णों को प्रतिशत-एन्कोड करें। RFC 3986 का पालन करता है।
URL क्वेरी स्ट्रिंग में एक स्थान वर्ण चुपचाप अनुरोध को तोड़ देता है। RFC 3986 (यूनिफॉर्म रिसोर्स आइडेंटिफायर: सामान्य सिंटैक्स) यह परिभाषित करता है कि URL में कौन से वर्ण सुरक्षित हैं और कौन से प्रतिशत-एन्कोड किए जाने चाहिए। प्रतिशत-एन्कोडिंग प्रत्येक असुरक्षित बाइट को % के साथ बदल देती है उसके बाद दो बड़े हेक्साडेसिमल अंक होते हैं। यह ब्राउज़र-आधारित एन्कोडर तुरंत RFC 3986 लागू करता है, बिना आपके डेटा को कहीं भेजे। इसका उपयोग पूर्ण URLs या व्यक्तिगत क्वेरी पैरामीटर मानों को एन्कोड करने के लिए करें और हर बार मानकों के अनुरूप आउटपुट प्राप्त करें।
URL को एन्कोड कैसे करें
- इनपुट फ़ील्ड में URL या पाठ पेस्ट करें।
- केवल असुरक्षित वर्णों को एन्कोड करने के लिए पूर्ण URL मोड चुनें, या सभी विशेष वर्णों को एन्कोड करने के लिए घटक मोड चुनें जिसमें
&और=शामिल हैं। - प्रतिशत-एन्कोडेड आउटपुट परिणाम पैनल में दिखाई देता है।
- अपने अनुरोध, कोड, या दस्तावेज़ में उपयोग के लिए एन्कोडेड स्ट्रिंग कॉपी करें।
प्रतिशत-एन्कोडिंग को समझना
RFC 3986 मानक
RFC 3986 (IETF, 2005) एक URI में दो वर्ण श्रेणियों को परिभाषित करता है। अनुरक्षित वर्ण (A-Z a-z 0-9 - _ . ~) बिना एन्कोडिंग के प्रकट हो सकते हैं। आरक्षित वर्ण (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) का विशेष संरचनात्मक अर्थ होता है और संदर्भ के आधार पर एन्कोडिंग की आवश्यकता हो सकती है या नहीं। हर अन्य वर्ण - जिसमें स्थान, गैर-ASCII यूनिकोड, और इन सेटों के बाहर के वर्ण शामिल हैं - प्रतिशत-एन्कोडेड होना चाहिए।
encodeURI बनाम encodeURIComponent
JavaScript दो एन्कोडिंग फ़ंक्शन प्रदान करता है। encodeURI() एक पूर्ण URL को एन्कोड करता है और आरक्षित वर्णों को बरकरार रखता है क्योंकि वे संरचनात्मक भूमिकाएँ निभाते हैं। encodeURIComponent() भी संरचनात्मक वर्णों को एन्कोड करता है, उन्हें शाब्दिक डेटा के रूप में मानता है - यह व्यक्तिगत क्वेरी पैरामीटर नामों और मानों के लिए डिज़ाइन किया गया है जहाँ & और = URL सिंटैक्स को तोड़ देंगे। इस उपकरण का पूर्ण URL मोड encodeURI के अनुरूप है; घटक मोड encodeURIComponent के अनुरूप है।
उदाहरण
इनपुट
Hello World! @2024
आउटपुट (घटक मोड)
Hello%20World!%20%402024
स्थान %20 (RFC 3986 मानक) के रूप में एन्कोड होता है; @ %40 बन जाता है। विस्मयादिबोधक चिह्न कुछ संदर्भों में एक अनरिजर्व्ड वर्ण है और मोड के आधार पर एन्कोड किया जा सकता है या नहीं।
सामान्य उपयोग के मामले
- क्वेरी पैरामीटर मान - URL में जोड़ने से पहले
&,=, या+वाले मानों को एन्कोड करें - सर्च इंजन क्वेरी - एक रीडायरेक्ट URL बनाने से पहले उपयोगकर्ता खोज इनपुट को एन्कोड करें
- API अनुरोध निर्माण - स्लैश, स्थान, या विशेष वर्णों वाले पथ खंडों को एन्कोड करें
- OAuth पैरामीटर - OAuth 1.0 सिग्नेचर बेस स्ट्रिंग्स को RFC 5849 के अनुसार प्रतिशत-एन्कोडिंग की आवश्यकता होती है
सामान्य गलतियाँ
- डबल-एन्कोडिंग - यदि कोई मान पहले से ही प्रतिशत-एन्कोडेड है, तो इसे फिर से एन्कोड करने से
%स्वयं एन्कोड होता है,%2520उत्पन्न करता है बजाय%20के - पैरामीटर मानों के लिए पूर्ण URL मोड का उपयोग करना - पूर्ण URL मोड
&और=को अनएन्कोडेड छोड़ता है, क्वेरी स्ट्रिंग सिंटैक्स को तोड़ता है; पैरामीटर मानों के लिए घटक मोड का उपयोग करें - गैर-ASCII वर्णों को भूलना - गैर-ASCII पाठ को पहले UTF-8 बाइट्स में परिवर्तित किया जाना चाहिए, फिर प्रत्येक बाइट को अलग-अलग प्रतिशत-एन्कोड किया जाना चाहिए
प्रक्रिया को उलटने के लिए, URL डिकोडर का उपयोग करें। URL क्वेरी पैरामीटर में परिवहन किए गए बाइनरी डेटा के लिए, पहले Base64 एन्कोडर का उपयोग करें URL-सुरक्षित मोड में, फिर आउटपुट पहले से ही बिना अतिरिक्त प्रतिशत-एन्कोडिंग के URL-सुरक्षित होता है।
अक्सर पूछे जाने वाले सवाल
URL एन्कोडिंग और Base64 एन्कोडिंग में क्या अंतर है?
प्रतिशत-एन्कोडिंग असुरक्षित वर्णों को %XX हेक्स अनुक्रमों से बदलती है जबकि सुरक्षित वर्णों को वैसा ही रखती है, इसलिए आउटपुट लंबाई इनपुट के समान होती है। Base64 सभी डेटा को 64-चर वर्णमाला में परिवर्तित करता है, आकार को 33% बढ़ाता है लेकिन सुनिश्चित करता है कि परिणाम में केवल सुरक्षित ASCII वर्ण हों। प्रतिशत-एन्कोडिंग कुछ विशेष वर्णों को URL-सुरक्षित बनाती है; Base64 मनमाने बाइनरी डेटा को पाठ के रूप में एन्कोड करता है।
मुझे JavaScript में encodeURI बनाम encodeURIComponent कब उपयोग करना चाहिए?
encodeURI() एक पूर्ण URL को एन्कोड करने के लिए है - यह संरचनात्मक वर्णों को जैसे : / ? # & = को संरक्षित करता है। encodeURIComponent() एक URL के भीतर व्यक्तिगत मानों को एन्कोड करने के लिए है - यह संरचनात्मक वर्णों को एन्कोड करता है ताकि उन्हें URL सिंटैक्स के बजाय शाब्दिक डेटा के रूप में माना जाए। जब संदेह हो, तो किसी भी उपयोगकर्ता-प्रदत्त इनपुट के लिए encodeURIComponent() का उपयोग करें।कुछ एन्कोडरों में स्थान %20 क्यों बनता है लेकिन दूसरों में +?
%20 एक स्थान के लिए RFC 3986 प्रतिशत-एन्कोडिंग है और URI पथ खंडों और क्वेरी मानों के लिए सही है। + चिह्न जो स्थान का प्रतिनिधित्व करता है, application/x-www-form-urlencoded (HTML फ़ॉर्म सबमिशन) के लिए विशिष्ट है, जो RFC 3986 से पहले आया था। दोनों अपने-अपने संदर्भों में मान्य हैं, लेकिन %20 HTML फ़ॉर्म के बाहर सार्वभौमिक मानक है।क्या URL एन्कोडिंग गैर-ASCII वर्णों के लिए काम करती है?
हाँ। गैर-ASCII वर्णों को पहले UTF-8 बाइट्स में परिवर्तित किया जाता है, फिर प्रत्येक बाइट को अलग-अलग प्रतिशत-एन्कोड किया जाता है। वर्ण ş (U+015F) %C5%9F बन जाता है। चीनी वर्ण 中 (U+4E2D) %E4%B8%AD बन जाता है। आधुनिक ब्राउज़र और सर्वर सभी गैर-ASCII वर्णों के लिए UTF-8 एन्कोडिंग की अपेक्षा करते हैं।
क्या जब मैं इस उपकरण का उपयोग करता हूँ तो मेरा URL डेटा आपके सर्वरों पर भेजा जाता है?
नहीं। सभी एन्कोडिंग encodeURI() या encodeURIComponent() का उपयोग करके आपके ब्राउज़र में स्थानीय रूप से चलती है। URLs, क्वेरी पैरामीटर, प्रमाणीकरण टोकन, और कोई भी अन्य डेटा जो आप पेस्ट करते हैं, कभी भी हमारे सर्वरों पर नहीं भेजा जाता है।