URL-एन्कोडेड स्ट्रिंग को डिकोड कैसे करें
डिकोडिंग प्रतिशत एन्कोडिंग को उलट देती है: हर %XX अनुक्रम एक बाइट बनता है और बाइट्स को UTF-8 टेक्स्ट के रूप में पढ़ा जाता है। घटक मोड decodeURIComponent() का उपयोग करता है, इसलिए परिणाम ठीक मूल मान होता है।
हल किया गया उदाहरण
कई बाइट वाले UTF-8 अनुक्रम एक ही वर्ण बन जाते हैं।
- इनपुट
- caf%C3%A9%20%26%20cr%C3%A8me
- परिणाम ·
decodeURIComponent() - café & crème
%20 स्पेस बन जाता है, लेकिन + शाब्दिक प्लस चिह्न ही रहता है।
- इनपुट
- a+b%20c
- परिणाम ·
decodeURIComponent() - a+b c
आख़िरी अनुक्रम में एक हेक्स अंक कम है, इसलिए टूल त्रुटि दिखाता है।
- इनपुट
- %E0%A4%A
- परिणाम ·
decodeURIComponent() - एन्कोड किया गया URL अमान्य है
छूटा हुआ अंक जोड़ने पर तीनों बाइट एक देवनागरी अक्षर में डिकोड होते हैं।
- इनपुट
- %E0%A4%A4
- परिणाम ·
decodeURIComponent() - त
टूल इसे कैसे संभालता है
- हर %XX अनुक्रम एक बाइट है और लगातार बाइट्स एक साथ UTF-8 के रूप में डिकोड होते हैं, इसलिए %C3%A9 é बन जाता है।
- प्लस चिह्न को स्पेस नहीं माना जाता: + वैसा ही रहता है। अगर टेक्स्ट किसी HTML फ़ॉर्म से आया है, तो डिकोड करने से पहले + को %20 से बदलें।
- अगर कोई अनुक्रम अधूरा है या मान्य UTF-8 नहीं है, तो पूरा इनपुट त्रुटि के साथ अस्वीकार हो जाता है; कुछ भी आधा डिकोड नहीं होता।
- पूर्ण URL मोड (decodeURI) %26, %2F और %3F जैसे आरक्षित वर्णों के एस्केप को एन्कोडेड ही रहने देता है, ताकि URL की संरचना न बदले।