URL एन्कोडिंग क्या है? परसेंट-एन्कोडिंग की संपूर्ण व्याख्या
त्वरित जवाब
URL एन्कोडिंग (percent-encoding) URL में unsafe अक्षरों को % के बाद दो hex अंकों से बदलती है। जैसे, स्पेस %20, & %26। यह सुनिश्चित करती है कि URL बिना ambiguity के भेजे जा सकें। हमारे मुफ्त URL Encoder/Decoder से बदलें।
परिचय
URL एन्कोडिंग, percent-encoding भी, URL में विशेष अक्षरों को एन्कोड करने का तंत्र है ताकि वे सुरक्षित भेजे जा सकें। URL केवल सीमित ASCII अक्षर रख सकते हैं —अक्षर, अंक और कुछ reserved अक्षर। कोई भी अन्य अक्षर (स्पेस, quote, गैर-ASCII) को % के बाद दो hex अंकों से एन्कोड करना होता है। URL एन्कोडिंग RFC 3986 द्वारा परिभाषित है।
क्रमशः
-
समझें कि किन वर्णों को एन्कोडिंग की आवश्यकता है
अनारक्षित वर्ण (A-Z, a-z, 0-9, -, _, ., ~) को एन्कोडिंग की आवश्यकता नहीं है। आरक्षित वर्ण (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) का URLs में विशेष अर्थ है और डेटा के रूप में उपयोग किए जाने पर इन्हें एन्कोड किया जाना चाहिए। अन्य सभी वर्ण (रिक्त स्थान, उद्धरण, गैर-ASCII) एन्कोड किए जाने चाहिए।
-
एन्कोडिंग तंत्र जानें
एन्कोडिंग की आवश्यकता वाले प्रत्येक वर्ण को उसके UTF-8 बाइट अनुक्रम में परिवर्तित किया जाता है, फिर प्रत्येक बाइट को %XX के रूप में दर्शाया जाता है जहां XX हेक्स मान है। स्थान (0x20) → %20। गैर-ASCII वर्ण 'é' (UTF-8: 0xC3 0xA9) → %C3%A9।
-
एनकोडयूआरआई बनाम एनकोडयूआरआईकंपोनेंट में अंतर बताएं
encodeURI() पूर्ण URL को एनकोड करता है लेकिन आरक्षित वर्ण (:/?&=) को संरक्षित करता है जो URL संरचना का हिस्सा हैं। encodeURIComponent() अनारक्षित वर्णों को छोड़कर सब कुछ एनकोड करता है - इसे क्वेरी पैरामीटर मानों के लिए उपयोग करें जहां आरक्षित वर्ण डेटा हैं, संरचना नहीं।
-
डिकोड प्रतिशत-एन्कोडेड URLs
डिकोडिंग एन्कोडिंग को उलट देती है: %20 → स्पेस, %C3%A9 → é. पूर्ण URLs के लिए decodeURI() और क्वेरी पैरामीटर मानों के लिए decodeURIComponent() का उपयोग करें। अमान्य एस्केप अनुक्रम (जैसे %ZZ) त्रुटियाँ उत्पन्न करते हैं।
उदाहरण
किसी स्थान को एनकोड करें
इनपुट: hello world
उत्पादन: hello%20world
गैर-ASCII पाठ को एन्कोड करें
इनपुट: café
उत्पादन: caf%C3%A9
किसी क्वेरी पैरामीटर मान को एन्कोड करें
इनपुट: name=John Doe & Co.
उत्पादन: name%3DJohn%20Doe%20%26%20Co.
सामान्य समस्या
- संपूर्ण URL को एन्कोड करना जब केवल मानों को एन्कोडिंग की आवश्यकता होती है - क्वेरी पैरामीटर मानों को एन्कोड करें, न कि URL संरचना (://?&=) को।
- डबल-एन्कोडिंग - यदि URL पहले से ही एन्कोड किया गया है, तो एन्कोडिंग फिर से %20 के बजाय %2520 उत्पन्न करती है। यदि यह सुनिश्चित नहीं है कि यह पहले से ही एन्कोड किया गया है तो पहले डिकोड करें।
- encodeURI बनाम encodeURIComponent का गलत तरीके से उपयोग करना - encodeURI URL संरचना वर्णों को संरक्षित करता है; encodeURIComponent उन्हें एनकोड करता है। क्वेरी पैरामीटर मानों के लिए बाद वाले का उपयोग करें।
- अमान्य एस्केप क्रम -%ZZ या अंत में एक% अमान्य है और डिकोड होने पर त्रुटियां उत्पन्न हो जाएंगी।
सुझावों
- URL इंजेक्शन को रोकने के लिए हमेशा क्वेरी पैरामीटर मानों को एन्कोड करें जिनमें रिक्त स्थान, विशेष वर्ण या उपयोगकर्ता इनपुट हो सकते हैं।
- क्वेरी पैरामीटर मानों के लिए encodeURIComponent() और पूर्ण URLs के लिए encodeURI() का उपयोग करें, जिन्हें केवल असुरक्षित वर्णों को एन्कोड करने की आवश्यकता है।
- URL एन्कोडिंग एन्क्रिप्शन नहीं है—कोई भी इसे डिकोड कर सकता है। संवेदनशील डेटा को छिपाने के लिए इसका उपयोग कभी न करें।
- अपने ब्राउज़र में तत्काल, निजी रूपांतरण के लिए हमारे URL एनकोडर और डिकोडर का उपयोग करें।