यह कैसे काम करता है
URL एन्कोडिंग (परसेंट-एन्कोडिंग) उन वर्णों को, जो किसी पते में शाब्दिक रूप से नहीं आ सकते, उनके बाइट मान वाले %XX अनुक्रमों से बदल देती है। उदाहरण के लिए, स्पेस %20 बन जाता है।
"कॉम्पोनेंट" स्कोप आरक्षित वर्णों (= & / ? #) को भी एस्केप करता है: इसे किसी पैरामीटर के मान के लिए उपयोग करें। "पूर्ण URL" पते की संरचना बनाए रखता है: इसे पूरे URL के लिए उपयोग करें।
HTML फ़ॉर्म में स्पेस को + के रूप में एन्कोड किया जाता है (application/x-www-form-urlencoded); बाकी सभी मामलों में RFC 3986 मानक के अनुसार %20 उपयोग होता है।
उदाहरण
hola mundo & máshola%20mundo%20%26%20m%C3%A1s"&" को एस्केप किया जाता है (%26) ताकि यह पैरामीटर विभाजक से न भ्रमित हो; "á" को UTF-8 में एन्कोड किया जाता है (%C3%A1)।a=1&b=2a%3D1%26b%3D2https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202"पूर्ण URL" मोड में ://, / और ? संरक्षित रहते हैं; केवल वही एस्केप होता है जो पते को तोड़ देगा।उपयोग के मामले
- किसी URL को हाथ से बनाते समय क्वेरी पैरामीटर को सुरक्षित रूप से तैयार करना।
- किसी GET अनुरोध में भेजने से पहले उन मानों को एन्कोड करना जिनमें &, =, स्पेस या उच्चारण चिह्न हों।
- किसी URL को डिकोड करना ताकि पढ़ा जा सके कि प्रत्येक पैरामीटर कौन-से मान रखता है।
- फ़ॉर्म सबमिशन के लिए application/x-www-form-urlencoded बॉडी तैयार करना।
अक्सर पूछे जाने वाले प्रश्न
"कॉम्पोनेंट" और "पूर्ण URL" में क्या अंतर है?
"कॉम्पोनेंट" (encodeURIComponent) =, &, /, ?, # को भी एस्केप करता है — यह किसी एकल मान के लिए है। "पूर्ण URL" (encodeURI) इन संरचनात्मक वर्णों को बनाए रखता है — यह पूरे URL के लिए है।
स्पेस के लिए + कब और %20 कब उपयोग होता है?
+ केवल फ़ॉर्म के बॉडी (application/x-www-form-urlencoded) पर लागू होता है। URL के बाकी हिस्से में स्पेस के लिए मानक %20 है।
"á" %C3%A1 में क्यों बदलता है, एकल %XX में क्यों नहीं?
क्योंकि यह UTF-8 में एन्कोड होता है: गैर-ASCII वर्ण कई बाइट लेते हैं, और प्रत्येक बाइट को उसके अपने %XX अनुक्रम से दर्शाया जाता है।
किसी URL को एन्कोड करने से वह सुरक्षित हो जाता है?
नहीं। यह केवल इसे सिंटैक्स स्तर पर मान्य बनाता है। यह एन्क्रिप्शन नहीं है और सामग्री की किसी भी तरह से रक्षा नहीं करता।