सामग्री पर जाएँ
🚀 10 टूल लाइव, हमेशा के लिए मुफ़्त — टूलबॉक्स बढ़ता जा रहा है
होम›ब्लॉग›URL एन्कोडिंग समझें: परसेंट-एन्कोडिंग, %20 और आम गड़बड़ियाँ
गाइड

URL एन्कोडिंग समझें: परसेंट-एन्कोडिंग, %20 और आम गड़बड़ियाँ

कोई अक्षर %XX कैसे बनता है, URL किन अक्षरों को वैसे ही स्वीकार करता है, encodeURIComponent और encodeURI अलग नतीजे क्यों देते हैं, स्पेस कब + और कब %20 होता है, और %2520 के पीछे छिपी डबल एन्कोडिंग कैसे ढूँढें।

✍ संस्थापक और CEO द्वारा, टीम BuildToolForge🗓 2026-10-31⏱ 8 मिनट
url-encodingpercent-encodingquery-stringutf-8encodeuricomponent
एन्कोडिंग गाइड2026

URL एन्कोडिंग
आसान भाषा में

टेक्स्ट URL के अंदर सुरक्षित कैसे जाता है

आरक्षित अक्षर · %20 या + · UTF-8

url · encode
> encodeURIComponent("café & crème")
नतीजाcaf%C3%A9%20%26%20cr%C3%A8me
> decodeURIComponent("a%2520b")
नतीजाa%20b
✓ "न" के तीन UTF-8 बाइट हैं, इसलिए तीन %XX बनते हैं
आम एन्कोडिंग
%20
स्पेस
%2F
/
%3F
?
%26
&
%3D
=
%25
%
अनारक्षित: कभी एन्कोड नहींआरक्षित: मानों के अंदर एन्कोडUTF-8 बाइटएन्क्रिप्शन नहीं

URL एन्कोडिंग असल में क्या है

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

यही तरीका उन अक्षरों पर भी लगता है जो मान्य तो हैं पर कोई मतलब रखते हैं। ? क्वेरी शुरू करता है और & पैरामीटर अलग करता है, इसलिए दाल & चावल खोजने पर & को %26 भेजना पड़ता है, वरना सर्वर को एक की जगह दो पैरामीटर दिखते हैं।

बस इतना ही काम है: किसी मान को URL के अंदर सुरक्षित रखना, URL का मतलब बदले बिना। यह न कम्प्रेशन है, न एन्क्रिप्शन, न सुरक्षा फ़िल्टर।

कोई अक्षर %XX कैसे बनता है

एन्कोडिंग अक्षरों पर नहीं, बाइट्स पर होती है। पहले टेक्स्ट UTF-8 बाइट्स में बदलता है, फिर हर बाइट जिसे एन्कोड करना है, % और उसके हेक्स मान के रूप में लिखा जाता है।

ASCII अक्षर एक बाइट का होता है, इसलिए स्पेस (बाइट 32, हेक्स 20) बनता है %20। ASCII से बाहर के अक्षर UTF-8 में दो से चार बाइट लेते हैं, और हर बाइट का अपना कोड होता है:

  • न → बाइट E0 A4 A8 → %E0%A4%A8
  • ₹ → बाइट E2 82 B9 → %E2%82%B9
  • 😀 → बाइट F0 9F 98 80 → %F0%9F%98%80

डिकोडिंग उल्टा करती है: बाइट्स इकट्ठा करो और उन्हें UTF-8 की तरह पढ़ो। अगर बाइट्स किसी दूसरे कैरेक्टर सेट से बने थे, तो अजीब चिह्न निकलते हैं। सभी आधुनिक ब्राउज़र और फ़्रेमवर्क UTF-8 इस्तेमाल करते हैं, और आपको भी करना चाहिए।

आरक्षित, अनारक्षित, और संदर्भ क्यों मायने रखता है

RFC 3986 URL के अक्षरों को दो समूहों में बाँटता है।

अनारक्षित अक्षर — A–Z a–z 0–9 - . _ ~ — को कभी एन्कोड करने की ज़रूरत नहीं होती। ऐसा करना मान्य है पर बेकार है, और अच्छा एन्कोडर इन्हें नहीं छूता।

आरक्षित अक्षर — : / ? # [ ] @ ! $ & ' ( ) * + , ; = — URL की बनावट तय करते हैं। इन्हें एन्कोड करना है या नहीं, यह इस पर निर्भर है कि ये कहाँ हैं। पाथ के हिस्सों के बीच का / स्लैश ही रहना चाहिए; पैरामीटर में भेजे फ़ाइल नाम के अंदर का / %2F बनना चाहिए। इसलिए "URL एन्कोड करने" का कोई एक सही तरीका नहीं है: हर हिस्से को उसकी जगह के हिसाब से एन्कोड किया जाता है।

encodeURIComponent बनाम encodeURI

JavaScript में दो बिल्ट-इन फ़ंक्शन हैं, और ग़लत वाला चुनना URL की सबसे आम गड़बड़ी है।

फ़ंक्शनकिसके लिएकिन्हें नहीं छूता
encodeURIComponentएक मान: पैरामीटर, पाथ का हिस्सासिर्फ़ अनारक्षित अक्षर
encodeURIपूरा पता जो काम करता रहना चाहिएआरक्षित अक्षर भी

a&b=c जैसे मान पर encodeURI चलाएँ तो & और = बचे रहते हैं, और एक पैरामीटर दो बन जाता है। पूरे URL पर encodeURIComponent चलाएँ तो हर / और : एस्केप हो जाता है और लिंक, लिंक नहीं रहता। नियम: URL को हिस्सों से बनाएँ और हर मान को encodeURIComponent से एन्कोड करें — या बेहतर, यह काम URLSearchParams पर छोड़ दें।

दूसरी भाषाओं में भी यही बँटवारा है: Python में quote और quote_plus, PHP में rawurlencode और urlencode। हमारा URL एन्कोडर और डिकोडर दोनों मोड देता है ताकि आप अपने इनपुट पर फ़र्क़ देख सकें।

+ या %20: फ़ॉर्म वाला अपवाद

पाथ में स्पेस %20 होता है और + बस प्लस चिह्न। लेकिन डिफ़ॉल्ट application/x-www-form-urlencoded टाइप से भेजे गए HTML फ़ॉर्म क्वेरी में स्पेस को + लिखते हैं, और सर्वर उसे वापस स्पेस में बदलते हैं।

दिक़्क़त तब आती है जब दोनों तरीके टकराते हैं। +91 98765 43210 जैसा नंबर बिना एन्कोड किए क्वेरी में डालें तो वह 91 98765 43210 बनकर पहुँचता है, क्योंकि सर्वर ने + को स्पेस पढ़ा। हल है प्लस को %2B लिखना, जो फ़ॉर्म के नियम मानने वाला हर एन्कोडर करता है। अगर पता न हो कि दूसरी तरफ़ कौन-सा तरीका चलता है, तो स्पेस के लिए %20 और प्लस के लिए %2B हमेशा सुरक्षित हैं।

डबल एन्कोडिंग और %2520 वाली गड़बड़ी

%25 ख़ुद प्रतिशत चिह्न का एन्कोडेड रूप है। इसलिए URL में %2520 दिखे, तो वह दूसरी बार एन्कोड हुआ %20 है: कोई मान पहले से एन्कोड होने के बाद फिर एन्कोडर से गुज़रा।

यह आम तौर पर किसी सीमा पर होता है — कोई फ़्रेमवर्क उस पैरामीटर को एन्कोड कर देता है जिसे कॉल करने वाला कोड पहले ही एन्कोड कर चुका था, या रीडायरेक्ट URL को दूसरे URL में डालने के लिए एक बार एन्कोड किया जाता है और फिर कोई लाइब्रेरी दोबारा करती है। दिखने वाला असर: 404, शाब्दिक %20 की खोज, या प्रतिशत चिह्नों से भरा फ़ाइल नाम।

दो बार डिकोड करने से मूल मिल जाता है, पर असली हल दूसरा एन्कोडर ढूँढकर हटाना है। ठीक एक बार एन्कोड करें — उसी समय जब मान URL में डाला जाए।

एन्कोडिंग न एस्केपिंग है, न एन्क्रिप्शन

परसेंट-एन्कोडिंग किसी मान को URL के अंदर सुरक्षित बनाती है। HTML, JavaScript या SQL के लिए यह कुछ नहीं करती। सर्वर जैसे ही %3Cscript%3E डिकोड करता है, उसके पास फिर से सामान्य <script> होता है, इसलिए आउटपुट को उसकी मंज़िल के हिसाब से एस्केप करना और डेटाबेस क्वेरी में पैरामीटर इस्तेमाल करना अब भी ज़रूरी है।

यह गोपनीयता भी नहीं है। कोई भी URL डिकोड कर सकता है, और URL सर्वर लॉग, ब्राउज़र हिस्ट्री, एनालिटिक्स और अगले पेज के Referer हेडर में पहुँचते हैं। पासवर्ड, टोकन या निजी डेटा क्वेरी में कभी न डालें, सिर्फ़ इसलिए कि वह "उलझा हुआ दिखता है"। यही बात Base64 पर भी लागू है, जैसा हमारी Base64 गाइड बताती है।

जब डिकोडिंग गड़बड़ हो

URL की ज़्यादातर समस्याएँ इनमें से एक होती हैं:

  • "URIError: malformed URI sequence"। किसी % के बाद दो हेक्स अंक नहीं हैं, या बाइट्स सही UTF-8 नहीं हैं। असली प्रतिशत चिह्न ख़ुद %25 के रूप में भेजना होता है।
  • अक्षर अजीब चिह्न या � बनकर आते हैं। बाइट्स एक कैरेक्टर सेट में लिखे और दूसरे में पढ़े गए। पक्का करें कि दोनों तरफ़ UTF-8 हो।
  • कोई पैरामीटर & पर कट जाता है। मान एन्कोड नहीं हुआ, या encodeURIComponent की जगह encodeURI से हुआ।
  • प्लस चिह्न स्पेस बन जाते हैं। फ़ॉर्म डिकोडिंग ने + को स्पेस माना। असली प्लस को %2B लिखें।
  • %2520, %253D वग़ैरह। डबल एन्कोडिंग: दूसरा एन्कोडर ढूँढें।

URL को किसी डिकोडर में पेस्ट करें और हर क्वेरी पैरामीटर अलग से देखें — आम तौर पर कुछ सेकंड में समस्या साफ़ दिख जाती है।

संबंधित टूल और गाइड:

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

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

URL एन्कोडिंग, जिसे परसेंट-एन्कोडिंग भी कहते हैं, URL में मान्य न होने वाले अक्षरों को हर UTF-8 बाइट के लिए % और दो हेक्स अंकों के रूप में लिखती है। स्पेस बनता है %20। इससे कोई भी टेक्स्ट URL के अंदर बिना मतलब बदले जा सकता है।

स्पेस कभी + और कभी %20 क्यों होता है?⌄

application/x-www-form-urlencoded से भेजे गए HTML फ़ॉर्म क्वेरी में स्पेस को + लिखते हैं। बाकी हर जगह, पाथ और ज़्यादातर API में, स्पेस %20 है और + असली प्लस। %20 हमेशा सुरक्षित है।

encodeURI इस्तेमाल करूँ या encodeURIComponent?⌄

किसी एक मान, जैसे क्वेरी पैरामीटर या पाथ के हिस्से, के लिए encodeURIComponent इस्तेमाल करें, क्योंकि यह &, =, / और ? एन्कोड करता है। encodeURI सिर्फ़ उस पूरे URL के लिए है जिसकी बनावट बनी रहनी चाहिए।

%2520 का क्या मतलब है?⌄

यह दो बार एन्कोड हुआ स्पेस है: %25 प्रतिशत चिह्न है, इसलिए %2520 दूसरी बार एन्कोड हुआ %20 है। पढ़ने के लिए दो बार डिकोड करें, फिर उस कोड को ठीक करें जो मान को दो बार एन्कोड करता है।

क्या URL एन्कोडिंग सुरक्षित है?⌄

नहीं। इसे कोई भी उलट सकता है, इसमें कोई गोपनीयता नहीं है, और डिकोड किया इनपुट अब भी इंजेक्शन हमला ला सकता है। HTML के लिए आउटपुट एस्केप करें, डेटाबेस के लिए पैरामीटराइज़्ड क्वेरी इस्तेमाल करें, और URL में कभी कोई राज़ न डालें।

लेखक के बारे में
संस्थापक और CEO, BuildToolForge
X पर फ़ॉलो करें: @Buildtoolforge

वेब डेवलपमेंट और सुरक्षा में 15+ वर्षों का व्यावहारिक अनुभव। व्यावहारिक वेब सुरक्षा पर ध्यान: वेबसाइटों को सुरक्षित, भरोसेमंद और समस्या-निवारण में आसान रखना। BuildToolForge इन जाँचों को मुफ़्त, निजी और समझने योग्य बनाने के लिए है। जहाँ संभव हो, टूल आपके ब्राउज़र में चलते हैं, और आप किसी टूल में जो कुछ भी दर्ज करते हैं वह संग्रहीत नहीं होता।

हम अपनी गाइड कैसे लिखते हैं: हर गाइड व्यावहारिक अनुभव से लिखी जाती है, आधिकारिक मानकों से जाँची जाती है और असली डोमेन पर हमारे अपने टूल से परखी जाती है। मानक या टूल बदलने पर हम गाइड अपडेट करते हैं। कोई गलती मिली? हमें contact@buildtoolforge.com पर ईमेल करें।

अंतिम अपडेट: 2 नवंबर 2026