URL डिकोड करें
%E2%9C%93 को वापस ✓ में बदलें। डबल-एन्कोड की गई स्ट्रिंग, फ़ॉर्म एन्कोडिंग और आधा-टूटा इनपुट — सब ठुकराए नहीं जाते, संभाले जाते हैं। कुछ भी स्टोर नहीं किया जाता।
- कभी स्टोर नहीं होती
- न कतार, न इंतज़ार
- साइनअप नहीं, वॉटरमार्क नहीं
डिकोड किया हुआ यहां दिखेगा।
यह कैसे काम करता है
एन्कोड किया हुआ टेक्स्ट पेस्ट करें
पूरा URL, क्वेरी स्ट्रिंग, या बस एक वैल्यू।
ज़रूरत हो तो तरीक़ा चुनें
स्टैंडर्ड डिकोडिंग, या फ़ॉर्म डिकोडिंग जिसमें + का मतलब स्पेस होता है। पक्का न हो, तो जहां दोनों के नतीजे अलग हों, पेज आपको दिखा देता है।
नतीजा कॉपी करें
अगर टेक्स्ट दो बार एन्कोड हुआ था तो फिर से डिकोड करें — ऐसा अक्सर होता है, और एक बार दिख जाए तो पहचानना आसान है।
वह उलझन जिसे कोई आपके लिए नहीं सुलझा सकता
डिकोडिंग का तरीक़ा सीधा है — हर % के बाद आने वाले दो hex अंक ढूंढें, उन्हें वापस बाइट में बदलें, फिर बाइट्स को UTF-8 के रूप में पढ़ें — और इसमें ठीक एक असली उलझन है। प्लस का निशान स्पेस भी हो सकता है, और प्लस भी। सबमिट किए गए फ़ॉर्म में इसका मतलब स्पेस होता है, एक ऐसी परंपरा से जो वेब के अपने URL स्पेसिफ़िकेशन से भी पुरानी है। पाथ के हिस्से में यह सचमुच का कैरेक्टर है। टेक्स्ट में ख़ुद कुछ नहीं बताता कि कौन-सा नियम लागू है, इसलिए यह पेज एक चुनकर चुपचाप ग़लत होने के बजाय आपको दोनों अर्थ दिखाता है — यह सबसे ज़्यादा वहां मायने रखता है जहां चोट सबसे गहरी लगती है, जैसे ईमेल पता या base64 वैल्यू, जिनमें प्लस असली डेटा होता है।
गैर-ASCII टेक्स्ट हर कैरेक्टर के लिए कई परसेंट सीक्वेंस बनकर आता है, क्योंकि एन्कोडिंग कैरेक्टर पर नहीं, UTF-8 बाइट्स पर काम करती है: मात्रा वाला एक अक्षर दो, ज़्यादातर चिह्न तीन, और एक इमोजी चार सीक्वेंस बनता है। ऐसा सीक्वेंस डिकोड करें जो वैध UTF-8 नहीं है, तो आपको रिप्लेसमेंट कैरेक्टर मिलते हैं — आमतौर पर यह संकेत कि टेक्स्ट किसी दूसरे कैरेक्टर सेट से एन्कोड हुआ था, या किसी कैरेक्टर के बीच में कट गया है।
दो बार डिकोड करना सिर्फ़ ग़लती नहीं, सुरक्षा बग है। अगर कोई वैल्यू डिकोड हो, जांची जाए, और फिर दोबारा डिकोड हो, तो हमलावर जांच से कैरेक्टर छिपा सकता है: %252e%252e%252f “../” ढूंढने वाले फ़िल्टर से निकल जाता है, क्योंकि एक बार डिकोड होने के बाद भी वह %2e%2e%2f ही रहता है, और दूसरी बार के बाद वही ट्रैवर्सल बन जाता है जिसे रोकने के लिए फ़िल्टर लगा था। ठीक एक बार डिकोड करें, फिर जांचें — उल्टे क्रम में कभी नहीं।
जो टेक्स्ट कभी एन्कोड हुआ ही नहीं, वह बिगड़े बिना जस का तस लौटता है — जब आपको पक्का न पता हो कि किसी स्ट्रिंग को डिकोड करने की ज़रूरत है भी या नहीं, तब यही काम का व्यवहार है। जिस परसेंट निशान के बाद दो hex अंक नहीं आते, उसे एरर मानने के बजाय वैसा ही छोड़ दिया जाता है — वह सचमुच का परसेंट है, जो एन्कोड किए गए नहीं बल्कि पेस्ट किए गए टेक्स्ट में आम है।
जब आपको कुछ और चाहिए
कोड में डिकोडर को एन्कोडर से मेल खाना चाहिए। JavaScript में decodeURIComponent है; Python ठीक इसी प्लस-निशान वाले सवाल पर unquote और unquote_plus को अलग रखता है; PHP में इसी वजह से rawurldecode और urldecode हैं। उससे भी बेहतर है कि यह काम URL टाइप या क्वेरी-स्ट्रिंग पार्सर को करने दें — ज़्यादातर फ़्रेमवर्क पैरामीटर आपके लिए डिकोड कर देते हैं, और उसके बाद दोबारा डिकोड करना ही वह तरीक़ा है जिससे ऊपर वाला डबल-डिकोडिंग बग लिखा जाता है।
किसी एक वैल्यू को डिकोड करने के बजाय लंबे URL को जांचना हो, तो डिकोडर से बेहतर पार्सर है: python -c "import urllib.parse,sys; print(urllib.parse.urlparse(sys.argv[1]))" पते को उसके हिस्सों में बांट देता है, ताकि कुछ भी डिकोड करने से पहले आप देख सकें कि कौन-सा हिस्सा क्या है — जब कोई लिंक गड़बड़ कर रहा हो, तो असल सवाल आमतौर पर यही होता है।
अक्सर पूछे जाने वाले सवाल
डिकोड करने के बाद भी मेरे टेक्स्ट में %25 बचा है
तो यह दो बार एन्कोड हुआ था, जो बहुत आम है — ऐसा तब होता है जब पहले से एन्कोड की गई वैल्यू किसी रीडायरेक्ट या लॉगिंग लेयर से गुज़रते हुए फिर से एन्कोड हो जाती है। %25 ख़ुद % कैरेक्टर की एन्कोडिंग है, इसलिए पहली बार डिकोड करने पर %2520 बनता है %20, और दूसरी बार में वह स्पेस बन जाता है। बस फिर से डिकोड करें। यह पैटर्न दिखते ही पेज आपको बता देता है।
क्या “+” को स्पेस बनना चाहिए?
यह इस पर निर्भर है कि स्ट्रिंग आई कहां से, इसीलिए यह अंदाज़ा नहीं, आपका चुनाव है। application/x-www-form-urlencoded बॉडी में — यानी सबमिट किए गए HTML फ़ॉर्म में — + का मतलब स्पेस है। पाथ के हिस्से में, या ऐसे डेटा में जो बस URL से होकर गुज़रा है, + सचमुच का प्लस कैरेक्टर है और उसे स्पेस बनाने से वैल्यू बिगड़ जाती है। Base64 स्ट्रिंग्स में यही चोट लगती है: उनमें असली + कैरेक्टर होते हैं, और फ़ॉर्म-डिकोड करने से वे बर्बाद हो जाती हैं।
टूटी हुई स्ट्रिंग का क्या होता है?
जितना हो सकता है उतना डिकोड होता है और बाक़ी वैसा ही छोड़ दिया जाता है, पूरी स्ट्रिंग ठुकराई नहीं जाती। कोई भटका हुआ % जो किसी वैध एस्केप का हिस्सा न हो — जो आम है जब टेक्स्ट पहले से आधा डिकोड हो चुका हो या कट गया हो — ब्राउज़र के अपने डिकोडर से एरर फिंकवा देता है और कुछ नहीं लौटता। यहां हर वैध एस्केप डिकोड होता है और भटके कैरेक्टर जैसे हैं वैसे छोड़ दिए जाते हैं, जो किसी टूटी लॉग लाइन को पढ़ते समय कहीं ज़्यादा काम का है।
क्या मेरा टेक्स्ट कहीं स्टोर होता है?
नहीं। कुछ भी स्टोर नहीं किया जाता और कोई रिक्वेस्ट नहीं भेजी जाती। पेज लोड होने के बाद आप इंटरनेट बंद कर दें, तब भी यह चलता रहता है।
क्या मैं पूरा URL एक साथ डिकोड कर सकता हूं?
हां। पूरा पेस्ट करें — ढांचा पढ़ने लायक बना रहता है और सिर्फ़ एन्कोड किए गए हिस्से वापस टेक्स्ट में बदलते हैं, ताकि कई एन्कोडेड पैरामीटर वाला लंबा URL ऐसा बन जाए जिसे आप सच में पढ़ सकें।
ध्यान दें: प्लस का निशान दो अर्थ वाला है: क्वेरी स्ट्रिंग में इसका मतलब स्पेस होता है, और पाथ में सचमुच का प्लस। यह पेज अंदाज़ा लगाने के बजाय दोनों तरह से डिकोड करता है और दिखाता है कि कौन-सा क्या है। जो टेक्स्ट कभी परसेंट-एन्कोड हुआ ही नहीं, वह बिगाड़े बिना जस का तस लौटा दिया जाता है।
यह टूल अपनी वेबसाइट पर लगाएं
किसी भी ब्लॉग, क्लास पेज या हेल्प आर्टिकल के लिए मुफ़्त। एक स्निपेट पेस्ट करें और आपके विज़िटर इसे सीधे आपके पेज पर इस्तेमाल कर सकेंगे।
और डेवलपर टूल्स
URL एन्कोड करें
टेक्स्ट को URL में डालने लायक सुरक्षित बनाएं
Base64 डिकोड करें
Base64 को वापस टेक्स्ट या फ़ाइल में बदलें
JSON फ़ॉर्मैटर
उलझे JSON को पढ़ने लायक बनाएं
JWT डिकोडर
टोकन के अंदर क्या है, निजी तौर पर पढ़ें
QR कोड बनाएं
ऐसा QR कोड जो हमेशा आपका रहे
बारकोड बनाएं
EAN, UPC, Code 128 — अंकों की जांच के साथ