जावास्क्रिप्ट कार्यों decodeURIComponent
और के बीच अंतर क्या है decodeURI
?
जावास्क्रिप्ट कार्यों decodeURIComponent
और के बीच अंतर क्या है decodeURI
?
जवाबों:
इन दोनों के बीच के अंतर को समझाने के लिए मुझे encodeURI
और के बीच के अंतर को स्पष्ट करने दीजिए encodeURIComponent
।
मुख्य अंतर यह है कि:
encodeURI
समारोह पूर्ण यूआरआइ पर उपयोग के लिए करना है।encodeURIComponent
समारोह पर .. अच्छी तरह से .. यूआरआई घटकों प्रयोग की जाने वाली है कि किसी भी हिस्सा है इरादा है कि विभाजक के बीच झूठ (; /: @ & = + $, #?)।इसलिए, encodeURIComponent
इन विभाजकों में एन्कोडेड भी हैं क्योंकि उन्हें पाठ माना जाता है और विशेष वर्ण नहीं।
अब डिकोड फ़ंक्शंस के बीच अंतर करने के लिए, प्रत्येक फ़ंक्शन विशेष पात्रों के सिमेंटिक्स और उनकी हैंडलिंग का ख्याल रखते हुए अपने संबंधित एनकोड समकक्ष द्वारा उत्पन्न स्ट्रिंग्स को डिकोड करता है।
एनओडीयूआरआईसीओम्पोनेंट / डिकोड्यूरिकोम्पोनेंट () यूआरआई भागों में अलग-अलग टेक्स्ट स्ट्रिंग्स को एक साथ विभाजित करने और विभाजित करने के लिए लगभग हमेशा जोड़ी है जो आप उपयोग करना चाहते हैं।
कम आम, और भ्रामक रूप से नाम में एनकोडर्आई: इसे वास्तव में फिक्सब्रोकेनरी कहा जाना चाहिए। यह ऐसा कुछ लेता है जो लगभग एक URI होता है, लेकिन इसमें अमान्य वर्ण होते हैं जैसे कि इसमें रिक्त स्थान होता है, और इसे वास्तविक URI में बदल देता है। उपयोगकर्ता इनपुट से अमान्य URI को ठीक करने में इसका एक वैध उपयोग है, और इसका उपयोग IRI (नंगे यूनिकोड वर्णों में) को एक सादे URI में बदलने के लिए किया जा सकता है (गैर-ASCII को एनकोड करने के लिए% -escaped UTF-8 का उपयोग करके) )।
decodeURI कुछ खास लोगों को छोड़कर समान वर्णों को डिकोड्यूरिकॉपोनेंट के रूप में डिकोड करता है। यह एनकोडर्इ के उलटा होने के लिए प्रदान किया जाता है, लेकिन आप अभी भी उस पर भरोसा नहीं कर सकते हैं जैसा कि आप मूल रूप से डालते हैं - उदाहरण के लिए देखें। decodeURI(encodeURI('%20 '));
।
जहां एन्कोडोडी को वास्तव में फिक्सब्रोकेनुरि () नाम दिया जाना चाहिए, डिकोडायरी () को समान रूप से संभावितब्रीकमेरीप्रेस्ली वोरिंगुरि () कहा जा सकता है। मैं इसके लिए कहीं भी कोई वैध उपयोग के बारे में सोच सकता हूं; से बचें।
js> s = "http://www.example.com/string with + and ? and & and spaces";
http://www.example.com/string with + and ? and & and spaces
js> encodeURI(s)
http://www.example.com/string%20with%20+%20and%20?%20and%20&%20and%20spaces
js> encodeURIComponent(s)
http%3A%2F%2Fwww.example.com%2Fstring%20with%20%2B%20and%20%3F%20and%20%26%20and%20spaces
ऐसा लगता है कि encodeURI
एन्कोडिंग रिक्त स्थान और कुछ अन्य (जैसे nonprintable) वर्णों द्वारा एक "सुरक्षित" URI का उत्पादन होता है, जबकि encodeURIComponent
इसके अतिरिक्त बृहदान्त्र और स्लैश और प्लस वर्णों को एन्कोड करता है, और इसका उपयोग क्वेरी स्ट्रिंग्स में किया जाता है। की एन्कोडिंग + और? और यहाँ विशेष महत्व का है, क्योंकि ये क्वेरी स्ट्रिंग में विशेष वर्ण हैं।
जैसा कि मेरे पास एक ही सवाल था, लेकिन यहां जवाब नहीं मिला, मैंने यह जानने के लिए कुछ परीक्षण किए कि वास्तव में अंतर क्या है। मैंने ऐसा किया, क्योंकि मुझे किसी चीज़ के लिए एन्कोडिंग की आवश्यकता है, जो URL / URI संबंधित नहीं है।
encodeURIComponent("A")
रिटर्न "ए", यह "ए" को "% 41" में एनकोड नहीं करता हैdecodeURIComponent("%41")
"A" देता है।encodeURI("A")
रिटर्न "ए", यह "ए" को "% 41" में एनकोड नहीं करता हैdecodeURI("%41")
"A" देता है।-इसका अर्थ है कि दोनों अल्फ़ान्यूमेरिक वर्णों को डिकोड कर सकते हैं, भले ही उन्होंने उन्हें एनकोड नहीं किया हो। तथापि...
encodeURIComponent("&")
"% 26" देता है।decodeURIComponent("%26")
रिटर्न "&"।encodeURI("&")
रिटर्न "&"।decodeURI("%26")
"% 26" देता है।भले ही एन्कोडर्कोम्पोनेंट सभी वर्णों को एनकोड नहीं करता है, लेकिन डिकोड्यूरिकोम्पोनेंट किसी भी मूल्य को% 00 और% 7F के बीच डिकोड कर सकता है।
नोट: ऐसा लगता है कि यदि आप% 7F से ऊपर के मूल्य को डिकोड करने का प्रयास करते हैं (जब तक कि यह एक यूनिकोड मान नहीं है), तो आपकी स्क्रिप्ट "URI त्रुटि" के साथ विफल हो जाएगी।
encodeURIComponent()
इनपुट को URL-एन्कोडेड स्ट्रिंग में परिवर्तित करता है
encodeURI()
URL इनपुट को एनकोड करता है, लेकिन माना जाता है कि एक पूर्ण URL दिया गया है, इसलिए प्रोटोकॉल (जैसे http: // ) और होस्ट नाम (जैसे www.stackoverflow.com ) को एन्कोडिंग न करके एक वैध URL लौटाता है ।
decodeURIComponent()
और decodeURI()
ऊपर के विपरीत हैं
एनकोडर्कोम्पोनेंट नहीं बच गए:
A-Z a-z 0-9 - _ . ! ~ * ' ( )
एनकोडर्इ () बच नहीं:
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
decodeURIComponent("%C3%A9") == "é"; unescape("%C3%A9") == "é";