URL एन्कोड / डिकोड
एन्कोडिंगURL घटकों और पूर्ण URL के लिए प्रतिशत-एन्कोडिंग (RFC 3986)।
इस पृष्ठ पर
URL एन्कोडिंग क्या है?#
URL में केवल एक छोटे समुच्चय के बिना-एस्केप कैरेक्टर हो सकते हैं — ASCII अक्षर, अंक, और मुट्ठी भर चिह्न जैसे -, _, ., ~। बाकी सब (एक स्पेस, एक &, एक चीनी कैरेक्टर, एक इमोज़ी, यहाँ तक कि एक / जब उसे पाथ सेपरेटर के रूप में नहीं बल्कि डेटा के रूप में हो) एक प्रतिशत-एन्कोडेड एस्केप के रूप में लिखा जाना चाहिए: % के बाद दो हेक्स अंक, जैसे एक स्पेस के लिए %20 या 中 के UTF-8 बाइट्स के लिए %E4%B8%AD। URL एन्कोडिंग वह यांत्रिक अनुवाद है जो मनमाने टेक्स्ट को URL के अंदर यात्रा के लिए सुरक्षित बनाता है।
दो अलग काम हैं जिन्हें अक्सर एक ही समझ लिया जाता है, और यह औज़ार दोनों को विकल्प चयनक के ज़रिए उजागर करता है:
- घटक मोड (JavaScript
encodeURIComponentपथ) उस हर चीज़ को एस्केप करता है जो एक अक्षर, अंक, या- _ . ! ~ * ' (में से एक नहीं है। इसका उपयोग तब करें जब टेक्स्ट डेटा का एक टुकड़ा हो जिसे आप किसी क्वेरी पैरामीटर, पाथ सेगमेंट, या फ़्रैगमेंट में डालने वाले हों — ताकि संरचनात्मक अर्थ वाले कैरेक्टर (/ ? & = #) हानिरहित शाब्दिक टेक्स्ट में घट जाएँ। - पूर्ण मोड (
encodeURIपथ) उन्हीं असुरक्षित बाइट्स को एस्केप करता है पर जानबूझकर URL के अपने संरचनात्मक कैरेक्टरों को वैसे ही छोड़ देता है (: / ? # [ ] @ ! $ & ' ( ) * + , ; =)। इसका उपयोग तब करें जब आपके पास एक पूर्ण URL है जिसका आकार पहले से सही है और आप केवल उसके भीतर के शाब्दिक कैरेक्टरों को साफ़ करना चाहते हैं।
डिकोड किसी भी रूप को उलटता है। जब इनपुट में कोई विकृत एस्केप होता है जैसे %GG (वैध हेक्स नहीं) या एक अकेला %, तो औज़ार अनुमान लगाने के बजाय त्रुटि सामने लाता है और गलत स्थान की ओर इशारा करता है।
इसका उपयोग कैसे करें#
- ऊपर-बाईं ओर टॉगल से एन्कोड या डिकोड चुनें।
- विकल्प में, URL में रखे जा रहे एकल वैल्यू के लिए घटक चुनें, या पूरे URL के लिए पूर्ण जिसे अपनी संरचना रखनी चाहिए।
- बाईं ओर इनपुट पैनल में चिपकाएँ।
- दाईं ओर आउटपुट पैनल से परिणाम पढ़ें और कॉपी पर क्लिक करें।
- नमूना एक प्रदर्शन स्ट्रिंग लोड करता है; साफ़ करें पैनलों को रीसेट करता है।
प्रमुख विशेषताएँ#
- दो वास्तविक दायरे, एक नहीं। घटक बनाम पूर्ण
encodeURIComponent/encodeURIके अंतर को बिलकुल सटीक दर्शाता है, ताकि आप बिना औज़ार बदले एक वैल्यू एस्केप करें या पूरा URL साफ़ करें। - डिफ़ॉल्ट रूप से UTF-8। नॉन-ASCII कैरेक्टर्स अपने UTF-8 बाइट अनुक्रम के रूप में एन्कोड होते हैं (RFC 3986 से मानक), इसलिए
中文%E4%B8%AD%E6%96%87बनता है, किसी एकल-एस्केप Latin-1 ढेर के रूप में नहीं। - त्रुटियाँ पोज़िशन की ओर इशारा करती हैं। जब डिकोडिंग किसी अमान्य
%-एस्केप पर पहुँचती है, तो स्थिति पट्टी बताती है कि वह कहाँ है, पूरे इनपुट को फेंकने के बजाय। - स्थानीय रूप से चलता है। सब कुछ आपके ब्राउज़र में होता है; आप जो कुछ भी चिपकाते हैं वह अपलोड नहीं होता।
कार्य उदाहरण#
फ़्रैगमेंट a/b?c=d & e को घटक मोड से एन्कोड करना देता है:
a%2Fb%3Fc%3Dd%20%26%20e
ध्यान दें कि / %2F, ? %3F, = %3D, स्पेस %20, और & %26 हो जाता है — हर कैरेक्टर जिसे अन्यथा URL संरचना के रूप में पढ़ा जा सकता वह बेजान कर दिया गया। यह पूरी स्ट्रिंग को एक क्वेरी वैल्यू में ठूँसने का सही रूप है।
अब पूर्ण मोड पर स्विच करें और एक पूर्ण URL एन्कोड करें:
https://example.com/path?q=hello world&lang=zh CN
परिणाम प्रोटोकॉल, स्लैश, ?, और & को वैसे ही रखता है और केवल शाब्दिक स्पेसेस को एस्केप करता है:
https://example.com/path?q=hello%20world&lang=zh%20CN
वह एक नज़र में दोनों मोडों के बीच का अंतर है: घटक सब कुछ डेटा में समतल करता है, पूर्ण URL कंकाल को सुरक्षित रखता है और केवल उन बाइट्स को साफ़ करता है जिनकी ज़रूरत थी।
अक्सर पूछे जाने वाले प्रश्न#
घटक या पूर्ण — मैं तय कैसे करूँ?#
यदि आप एक क्वेरी स्ट्रिंग बना रहे हैं और उसमें से एक वैल्यू यूज़र इनपुट से आया, तो उस वैल्यू को घटक से एन्कोड करें। यदि आपके पास पहले से एक पूरी तरह बना URL है जिसमें बस कुछ फुटकर कैरेक्टर (स्पेसेस, एक्सेंट) हैं, तो पूरी चीज़ को पूर्ण से गुज़ारें। एक उपयोगी परीक्षण: क्या आउटपुट को लिंक के रूप में काम करने के लिए अभी भी अपने ?, &, और / चाहिए? तब पूर्ण उपयोग करें। क्या वे कैरेक्टर वास्तव में डेटा का हिस्सा हैं? तब घटक उपयोग करें।
मेरी डिकोड की स्ट्रिंग में %GG है और औज़ार त्रुटि देता है। क्यों?#
% के बाद हमेशा दो हेक्साडेसिमल अंक आने चाहिए। %GG वैध हेक्स नहीं है, इसलिए डिकोडर इसे अस्वीकार करता है और पोज़िशन बताता है — वही इनपुट जो कोड में URIError फेंकता। या तो स्रोत को ठीक करें ताकि वह %25 भेजे (एक शाब्दिक % का एन्कोडेड रूप) या विकृत एस्केप को सही करें।
मुझे क्वेरी स्ट्रिंग बनाने से पहले या बाद में एन्कोड करना चाहिए?#
प्रत्येक वैल्यू को = और & से जोड़ने से पहले एन्कोड करें। यदि आप पहले ?q=a & b बनाते हैं और फिर पूरी चीज़ को घटक मोड से एन्कोड करते हैं, तो = और & भी एस्केप हो जाते हैं और सर्वर अब उन्हें सेपरेटर के रूप में नहीं देखता। टुकड़ों को एन्कोड करें, फिर जोड़ें।
क्या यह Unicode को वैसे ही संभालता है जैसे ब्राउज़र करते हैं?#
हाँ। आधुनिक ब्राउज़र और सर्वर प्रतिशत-एस्केप से UTF-8 बाइट्स अपेक्षा करते हैं, और यही यह औज़ार निकालता है — 中 %E4%B8%AD बनता है। यदि आप किसी पुराने सिस्टम को डिबग कर रहे हैं जो किसी लीगेसी एकल-बाइट एन्कोडिंग (Latin-1, GBK, इत्यादि) अपेक्षा करता है, तो बाइट्स भिन्न होंगे और आपको किसी एन्कोडिंग-विशिष्ट औज़ार की ज़रूरत पड़ेगी।