गाइड12 मिनट का पठन

URL एन्कोडिंग की संपूर्ण गाइड

URL एन्कोडिंग के बारे में सब कुछ सीखें: यह क्या है, यह क्यों महत्वपूर्ण है, percent-encoding कैसे काम करता है, और URLs में विशेष अक्षरों को संभालने की सर्वोत्तम प्रथाएँ।

URL एन्कोडिंग क्या है?

URL एन्कोडिंग, जिसे percent-encoding के नाम से भी जाना जाता है, एक ऐसी प्रणाली है जो कुछ परिस्थितियों में Uniform Resource Identifier (URI) में जानकारी को एन्कोड करने का काम करती है। हालाँकि इसे URL एन्कोडिंग कहा जाता है, फिर भी इसका उपयोग अधिक व्यापक रूप से मुख्य Uniform Resource Identifier (URI) समूह के भीतर भी होता है, जिसमें Uniform Resource Locator (URL) और Uniform Resource Name (URN) दोनों शामिल हैं।

एन्कोडिंग की आवश्यकता इसलिए होती है क्योंकि URLs को इंटरनेट पर केवल ASCII कैरेक्टर सेट का उपयोग करके ही भेजा जा सकता है। चूँकि URLs में अक्सर ASCII सेट से बाहर के अक्षर होते हैं, इसलिए URL को एक वैध ASCII प्रारूप में बदलना पड़ता है। URL एन्कोडिंग असुरक्षित ASCII अक्षरों को एक % और उसके बाद दो हेक्साडेसिमल अंकों से बदल देती है।

Percent-Encoding कैसे काम करता है?

Percent-encoding प्रणाली प्रत्येक ऐसे अक्षर को, जिसे एन्कोड करने की आवश्यकता होती है, एक या अधिक बाइट्स में बदलकर काम करती है। फिर प्रत्येक बाइट को एक percent चिह्न और उसके बाद दो हेक्साडेसिमल अंकों द्वारा दर्शाया जाता है। ये हेक्साडेसिमल अंक निर्दिष्ट एन्कोडिंग (आमतौर पर UTF-8) में उस अक्षर के बाइट मान को दर्शाते हैं।

उदाहरण के लिए, स्पेस अक्षर (ASCII मान 32, हेक्स 20) %20 बन जाता है। ampersand & (ASCII मान 38, हेक्स 26) %26 बन जाता है। acute accent वाले e जैसे गैर-ASCII अक्षरों को पहले उनके UTF-8 बाइट अनुक्रम में एन्कोड किया जाता है, और फिर प्रत्येक बाइट को percent-encode किया जाता है।

Reserved बनाम Unreserved अक्षर

RFC 3986 URIs के लिए अक्षरों की दो श्रेणियाँ परिभाषित करता है: reserved और unreserved। Unreserved अक्षरों में बड़े और छोटे अक्षर (A-Z, a-z), अंक (0-9), हाइफ़न (-), पूर्ण विराम (.), अंडरस्कोर (_), और टिल्ड (~) शामिल हैं। इन अक्षरों को बिना एन्कोडिंग के किसी URI में शामिल किया जा सकता है।

Reserved अक्षरों का URL सिंटैक्स में विशेष अर्थ होता है। इनमें शामिल हैं: :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, और =। जब इन अक्षरों का उपयोग किसी URI घटक में उनके reserved उद्देश्य के अलावा किसी और तरह से किया जाता है, तो उन्हें percent-encode करना आवश्यक होता है।

विभिन्न भाषाओं में URL एन्कोडिंग

JavaScript

JavaScript URL एन्कोडिंग के लिए फ़ंक्शनों के दो जोड़े प्रदान करता है: संपूर्ण URIs को एन्कोड करने के लिए encodeURI() / decodeURI(), और अलग-अलग URI घटकों को एन्कोड करने के लिए encodeURIComponent() / decodeURIComponent()। मुख्य अंतर यह है कि encodeURI() उन reserved अक्षरों को सुरक्षित रखता है जिनका URIs में विशेष अर्थ होता है (जैसे /, ?, #), जबकि encodeURIComponent() सभी गैर-अल्फ़ान्यूमेरिक अक्षरों को एन्कोड कर देता है।

Python

Python का urllib.parse मॉड्यूल बुनियादी एन्कोडिंग/डिकोडिंग के लिए quote() और unquote() प्रदान करता है, साथ ही डिक्शनरी को query string में एन्कोड करने के लिए urlencode() भी देता है। quote() फ़ंक्शन एक वैकल्पिक safe पैरामीटर लेता है, जिससे यह निर्दिष्ट किया जा सके कि किन अक्षरों को एन्कोड नहीं करना है।

PHP

PHP urlencode() प्रदान करता है, जो स्पेस को + के रूप में एन्कोड करता है (application/x-www-form-urlencoded प्रारूप के अनुसार), और rawurlencode() प्रदान करता है, जो स्पेस को %20 के रूप में एन्कोड करता है (RFC 3986 के अनुसार)। डिकोडिंग के लिए, क्रमशः urldecode() और rawurldecode() का उपयोग करें।

सर्वोत्तम प्रथाएँ

  • उपयोगकर्ता के इनपुट को URLs में शामिल करने से पहले हमेशा एन्कोड करें
  • JavaScript में query पैरामीटर मानों को एन्कोड करने के लिए encodeURIComponent() का उपयोग करें
  • encodeURI() का उपयोग केवल तभी करें जब किसी संपूर्ण URI को एन्कोड कर रहे हों
  • अपने पूरे एप्लिकेशन में एन्कोडिंग के अपने तरीके के प्रति एकरूप रहें
  • URLs को प्रोसेस करने से पहले सर्वर साइड पर हमेशा उन्हें डिकोड करें
  • Unicode सहित विशेष अक्षरों के साथ अपनी एन्कोडिंग का परीक्षण करें
  • URLs को दोहरा एन्कोड न करें -- हमेशा जाँच लें कि कोई स्ट्रिंग पहले से एन्कोडेड तो नहीं है

संबंधित लेख

हमारे मुफ़्त टूल आज़माएँ