URL एनकोडर / डिकोडर
एक URL या एक सिंगल URL कॉम्पोनेंट को पर्सेंट-एनकोड या डिकोड करें, टाइप करते ही लाइव। आप जो भी टाइप करते हैं वह कहीं नहीं भेजा जाता।
कॉम्पोनेंट बनाम फ़ुल URI
ये अलग-अलग कैरेक्टर एनकोड करते हैं।
कॉम्पोनेंट एनकोडिंग हर उस चीज़ को एस्केप करती है जो किसी एक URL सेगमेंट के अंदर सेफ़ नहीं है, जिसमें &, =, और ? शामिल हैं—इसे किसी क्वेरी पैरामीटर वैल्यू के लिए इस्तेमाल करें। फ़ुल URI एनकोडिंग उन कैरेक्टर्स को छोड़ देती है क्योंकि उनका पूरे एड्रेस में स्ट्रक्चरल मतलब होता है—इसे तब इस्तेमाल करें जब आप एक हिस्से की बजाय पूरा URL एनकोड कर रहे हों।
URL को एनकोड क्यों करें
URL में सिर्फ़ एक सीमित सेट के ASCII कैरेक्टर्स ही हो सकते हैं। स्पेस, एक्सेंटेड लेटर, इमोजी, और & या # जैसे रिज़र्व्ड सिंबल को पर्सेंट-एनकोड करना ज़रूरी है (जैसे स्पेस के लिए %20) ताकि वे लिंक के हिस्से के रूप में पास होने पर उसे तोड़े बिना बचे रहें।
यह कैसे काम करता है
एनकोडिंग ब्राउज़र के अपने encodeURIComponent या encodeURI को कॉल करती है, वही फ़ंक्शन जो JavaScript कोड इस्तेमाल करता है, इसलिए आउटपुट बिल्कुल वही होता है जो एक ब्राउज़र या HTTP लाइब्रेरी प्रोड्यूस करती। हर अनसेफ़ बाइट एक पर्सेंट साइन प्लस उसकी UTF-8 एनकोडिंग के दो हेक्स डिजिट बन जाती है: स्पेस %20 बन जाता है, और मल्टी-बाइट कैरेक्टर कई एस्केप में एक्सपैंड होते हैं (é है %C3%A9)।
दो एनकोड मोड इसलिए हैं क्योंकि "URL एनकोड करना" दो अलग-अलग चीज़ों का मतलब रखता है। कॉम्पोनेंट मोड हर उस चीज़ को एस्केप करता है जो लेटर, डिजिट, या मुट्ठी भर सेफ़ मार्क्स नहीं है, जिसमें / ? & = : शामिल हैं। क्वेरी स्ट्रिंग में जाने वाली एक सिंगल वैल्यू के लिए आपको यही चाहिए होता है, वरना वैल्यू के अंदर का एम्परसैंड आपके पैरामीटर को दो हिस्सों में बांट देगा। फ़ुल-URL मोड स्ट्रक्चरल कैरेक्टर्स को छोड़ देता है ताकि पूरा URL काम करता रहे, और सिर्फ़ उन कैरेक्टर्स को एस्केप करता है जो बिल्कुल रॉ फ़ॉर्म में नहीं आ सकते। पूरे URL पर कॉम्पोनेंट एनकोडिंग इस्तेमाल करना उसे तोड़ देता है; किसी पैरामीटर वैल्यू पर फ़ुल-URL एनकोडिंग इस्तेमाल करना एक इंजेक्शन बग का इंतज़ार है। आप क्या एनकोड कर रहे हैं उसके हिसाब से चुनें, आदत के हिसाब से नहीं।
डिकोड मोड decodeURIComponent चलाता है, एक प्रैक्टिकल एक्स्ट्रा के साथ: प्लस साइन को पहले स्पेस में बदला जाता है, क्योंकि HTML फ़ॉर्म एनकोडिंग (वह application/x-www-form-urlencoded फ़ॉर्मैट जो आप क्वेरी स्ट्रिंग्स में देखते हैं) ऐतिहासिक रूप से स्पेस को + के रूप में लिखती है। मैलफ़ॉर्म्ड इनपुट, जैसे कोई अकेला % जिसके बाद दो हेक्स डिजिट नहीं हों, एक URIError थ्रो करता है जिसे टूल कैच करके रिपोर्ट करता है, बजाय आधा-डिकोडेड टेक्स्ट दिखाने के। अगर एक बार डिकोड करने के बाद भी %25xx सीक्वेंस बचे रहते हैं, तो आपकी स्ट्रिंग दो बार एनकोड हुई थी; इसे दोबारा डिकोड से गुज़ारें।
दोनों दिशाएं आपके टैब में सिंगल बिल्ट-इन फ़ंक्शन कॉल हैं। डेवटूल्स का Network पैनल टाइप करते समय कोई ट्रैफ़िक नहीं दिखाता, इसलिए सीक्रेट्स वाले टोकन और URL आपकी मशीन पर ही रहते हैं।