जावास्क्रिप्ट फ़ंक्शंस decodeURIComponent
और decodeURI
के बीच क्या अंतर है?decodeURIComponent और decodeURI के बीच क्या अंतर है?
उत्तर
इन दोनों के बीच के अंतर को समझाने के लिए मुझे एनकोडुरि और एनकोडुरिकोम्पोनेंट के बीच अंतर समझाएं।
- encodeURI पूर्ण यूआरआइ पर उपयोग के लिए करना है:
मुख्य अंतर यह है कि है।
- एन्कोडुरिकोम्पोनेंट का उपयोग किया जाना है .. अच्छी तरह से .. यूआरआई घटक विभाजक (; /?: @ & = + $, #) के बीच मौजूद किसी भी हिस्से में है।
तो, इन विभाजकों को एन्कोडुरिकॉम्पोनेंट में भी एन्कोड किया जाता है क्योंकि उन्हें पाठ के रूप में माना जाता है और विशेष वर्ण नहीं होते हैं।
अब डीकोड फ़ंक्शंस के बीच के अंतर के लिए, प्रत्येक फ़ंक्शन अपने संबंधित एनकोड समकक्ष द्वारा उत्पन्न विशेष स्ट्रिंग्स और उनके हैंडलिंग के अर्थशास्त्र की देखभाल करने वाले तारों को डीकोड करता है।
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
, जबकि encodeURIComponent
अतिरिक्त पेट के encodes और स्लेश और प्लस वर्ण, और क्वेरी स्ट्रिंग में इस्तेमाल किया जा करने के लिए है ऐसा लगता है कि encodeURI
एन्कोडिंग रिक्त स्थान से एक "सुरक्षित" यूआरआई पैदा करता है और कुछ अन्य (जैसे अमुद्रणीय) वर्ण। + और एन्कोडिंग? और & यहां विशेष महत्व का है, क्योंकि ये क्वेरी स्ट्रिंग में विशेष वर्ण हैं।
डीकोडुरिकोम्पोनेंट यूआरआई विशेष मार्कर जैसे &,?, #, आदि, डीकोडुरि को डीकोड करेगा।
encodeURIComponent()
एक URL- एनकोडेड स्ट्रिंग में इनपुट में कनवर्ट
encodeURI()
यूआरएल-एन्कोड तो इनपुट, लेकिन मान लिया गया एक पूर्ण URL दिया जाता है, प्रोटोकॉल प्रोटोकॉल एन्कोडिंग द्वारा एक वैध यूआरएल देता है (उदाहरण के लिए http: //) और होस्ट का नाम (उदा। www.stackoverflow.com)।
decodeURIComponent()
और decodeURI()
ऊपर
encodeURIComponent/decodeURIComponent (के विपरीत) लगभग हमेशा जोड़ी आप उपयोग करना, यूआरआई भागों में एक साथ श्रृंखलाबद्ध और बंटवारे के अलावा लेख स्ट्रिंग चाहते हैं।
एन्कोडुरि कम आम में, और भ्रामक रूप से नामित: इसे वास्तव में FixBrokenURI कहा जाना चाहिए। यह ऐसा कुछ लेता है जो लगभग एक यूआरआई है, लेकिन इसमें रिक्त स्थान जैसे अमान्य वर्ण हैं, और इसे वास्तविक यूआरआई में बदल देते हैं।इसका उपयोग उपयोगकर्ता इनपुट से अमान्य यूआरआई को ठीक करने में एक वैध उपयोग है, और इसका उपयोग एक आईआरआई (यूआरआई नंगे यूनिकोड वर्णों के साथ) को एक सादे यूआरआई में बदलने के लिए भी किया जा सकता है (गैर-ASCII को एन्कोड करने के लिए% से बचने वाले यूटीएफ -8 का उपयोग करके))।
decodeURI कुछ विशेष लोगों के लिए छोड़कर decodeURIComponent रूप में एक ही वर्ण डीकोड। यह एन्कोडुरि के विपरीत होने के लिए प्रदान किया जाता है, लेकिन आप अभी भी इसे वापस करने के लिए उस पर भरोसा नहीं कर सकते जैसा आपने मूल रूप से रखा है - उदाहरण देखें। decodeURI(encodeURI('%20 '));
।
जहां एन्कोडुरि को वास्तव में फिक्सब्रोकुरि(), डीकोडुरि() को संभावित रूप से नामित किया जाना चाहिए, जिसे संभावित रूप से संभावित रूप से कहा जा सकता है BreakMyPreviouslyWorkingURI()। मैं इसके लिए कहीं भी वैध उपयोग के बारे में सोच सकता हूं; से बचें।
decodeURI (encodeURI ('% 20')) '% 20' सही ढंग से यानी, क्रोम और Firefox में, बस जो ब्राउज़र/संस्करण गलत से सोच देता है परिणाम आपने देखा? – ccppjava
200 9 में तोड़ा जा सकता है लेकिन इस दौरान आधुनिक ब्राउज़र पकड़ा गया (मेरा अनुमान)। – WoodrowShigeru
जैसा कि मेरे पास एक ही सवाल था, लेकिन यहां जवाब नहीं मिला, मैंने यह पता लगाने के लिए कुछ परीक्षण किए कि वास्तव में अंतर क्या है। मैंने ऐसा किया, क्योंकि मुझे कुछ के लिए एन्कोडिंग की आवश्यकता है, जो यूआरएल/यूआरआई से संबंधित नहीं है।
encodeURIComponent("A")
रिटर्न 'ए', यह 'ए' के लिए "% 41"decodeURIComponent("%41")
रिटर्न 'ए' सांकेतिक शब्दों में बदलना नहीं है।encodeURI("A")
रिटर्न 'ए', यह 'ए' के लिए "% 41"decodeURI("%41")
रिटर्न 'ए' सांकेतिक शब्दों में बदलना नहीं है।
-इसका मतलब है कि दोनों अल्फान्यूमेरिक वर्णों को डीकोड कर सकते हैं, भले ही वे उन्हें एन्कोड न करें। हालांकि ...
encodeURIComponent("&")
"% 26" देता है।decodeURIComponent("%26")
"&" देता है।encodeURI("&")
"" देता है।decodeURI("%26")
"% 26" देता है।
भले ही encodeURIComponent सभी वर्णों को एन्कोड नहीं करता है, decodeURIComponent% 00 और% 7F के बीच किसी भी मान को डीकोड कर सकता है।
नोट: ऐसा प्रतीत होता है कि यदि आप% 7F से ऊपर मान को डीकोड करने का प्रयास करते हैं (जब तक कि यह एक यूनिकोड मान न हो), तो आपकी स्क्रिप्ट "यूआरआई त्रुटि" के साथ विफल हो जाएगी।
नोट: पहले decodeURIComponent (एन के बजाय एम) में एक टाइपो है। मैं इसे सही नहीं कर सकता, क्योंकि मुझे कम से कम 6 अक्षर संपादित करना है। – SuperNova
- 1. # {} $ {} और% {} के बीच क्या अंतर है?
- 2. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 3. $ और $$ के बीच क्या अंतर है?
- 4. के बीच क्या अंतर है:। और: आर !?
- 5. भिन्नता और '-' के बीच क्या अंतर है?
- 6. "$^एन" और "$ +" के बीच क्या अंतर है?
- 7. के बीच क्या अंतर है?
- 8. अंतर और कहां के बीच क्या अंतर है?
- 9. जावास्क्रिप्ट decodeURI (घटक) विकृत URI अपवाद
- 10. file_get_contents और fread बीच क्या अंतर है
- 11. क्या बीच का अंतर है :: और ::: स्काला
- 12. "। +" और "। +?" के बीच अंतर
- 13. $ {} और # {} के बीच अंतर क्या हैं?
- 14. PHP के बीच क्या अंतर है और इसमें शामिल है?
- 15. PHP में जावास्क्रिप्ट के decodeURIcomponent के बराबर क्या है?
- 16. अपवाद के .TOString() और मैसेज के बीच क्या अंतर है?
- 17. 7zip के 7z.sfx और 7zsd.sfx के बीच क्या अंतर है?
- 18. डीएल के फाइलवर्सन और उत्पादवर्जन के बीच क्या अंतर है?
- 19. UIImageView के फ्रेम और सीमाओं के बीच क्या अंतर है?
- 20. फ़ायरबग के console.log() और console.debug() के बीच क्या अंतर है?
- 21. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 22. ओरिएंटब संस्करणों के बीच क्या अंतर है?
- 23. एन्कोड/डीकोड के बीच क्या अंतर है?
- 24. os.popen() विधियों के बीच क्या अंतर है?
- 25. MATLAB में & &&& के बीच क्या अंतर है?
- 26. ऑब्जेक्ट और * के बीच अंतर?
- 27. इन कार्यों के बीच क्या अंतर है?
- 28. applicationDidReceiveMemoryWarning, didReceiveMemoryWarning के बीच क्या अंतर है?
- 29. इन कार्यों के बीच क्या अंतर है
- 30. window.innerWidth window.outerWidth के बीच क्या अंतर है?
एक और महत्वपूर्ण अंतर यह है कि यूनिस्केप मल्टी-बाइट यूटीएफ -8 अनुक्रमों को संभाल नहीं करता है जबकि डीकोडुरि [घटक] करता है: 'डीकोडुरिकोम्पोनेंट ("% सी 3% ए 9") == "é"; अनएस्केप ("% C3% A9") == "एक ©", ' – chris