एन्कोडिंग यूआरएल के लिए इनमें से किन तरीकों का उपयोग किया जाना चाहिए?क्या मुझे एन्कोडिंग यूआरएल के लिए एन्कोडुरि या एनकोडुरिकोम्पोनेंट का उपयोग करना चाहिए?
उत्तर
यह इस बात पर निर्भर करता है कि आप वास्तव में क्या करना चाहते हैं।
एन्कोडुरि मानता है कि इनपुट एक पूर्ण यूआरआई है जिसमें कुछ पात्र हो सकते हैं जिनमें एन्कोडिंग की आवश्यकता है।
encodeURIComponent विशेष अर्थ के साथ सब कुछ सांकेतिक शब्दों में बदलना होगा, ताकि आप इस तरह के
var world = "A string with symbols & characters that have special meaning?";
var uri = 'http://example.com/foo?hello=' + encodeURIComponent(world);
यदि आप एक यूआरएल घटक (एक क्वेरीस्ट्रिंग पैरामीटर) डालने के लिए स्ट्रिंग एन्कोड कर रहे हैं, तो आपको encodeURIComponent
पर कॉल करना चाहिए।
यदि आप मौजूदा यूआरएल एन्कोड कर रहे हैं, तो encodeURI
पर कॉल करें।
http://xkr.us/articles/javascript/encode-compare/ एक महान चर्चा के रूप में यूआरआई के घटकों के लिए इसका इस्तेमाल करते हैं, उदाहरण के साथ। उनके सारांश को उद्धृत करने के लिए:
"भागने() विधि + वर्ण को एन्कोड नहीं करती है जिसे सर्वर पक्ष पर एक स्थान के रूप में व्याख्या किया जाता है और साथ ही साथ उनके क्षेत्रों में रिक्त स्थान के रूप में उत्पन्न होता है। इस कमी और तथ्य के कारण इस समारोह को सही ढंग से गैर- ASCII वर्ण को संभालने के लिए विफल रहता है, आप बच() का उपयोग जब भी संभव से बचना चाहिए सबसे अच्छा विकल्प आमतौर पर encodeURIComponent है()
बच() सांकेतिक शब्दों में बदलना नहीं होगा:।। @ */+
एन्कोडुरि() विधि का उपयोग बचने() से थोड़ा अधिक विशिष्ट है जिसमें यह यूआरआई के लिए एन्कोड करता है क्योंकि क्वेरीस्ट्रिंग के विपरीत, जो यूआरएल का हिस्सा है। इस विधि का उपयोग करें जब आपको स्ट्रिंग को एन्कोड करने की आवश्यकता होती है ई यूआरआई का उपयोग करने वाले किसी भी संसाधन के लिए उपयोग किया जाता है और कुछ अक्षरों को अन-एन्कोडेड रहने की आवश्यकता होती है। ध्यान दें कि यह विधि 'चरित्र को एन्कोड नहीं करती है, क्योंकि यह यूआरआई के भीतर एक मान्य चरित्र है।
encodeURI() सांकेतिक शब्दों में बदलना नहीं होगा: ~ @ # $ & *() =: /; + '
अन्त में, encodeURIComponent() जब एक ही घटक एन्कोडिंग विधि ज्यादातर मामलों में इस्तेमाल किया जाना चाहिए? एक यूआरआई का। यह विधि कुछ वर्णों को एन्कोड करेगी जिन्हें आम तौर पर यूआरआई के लिए विशेष वर्ण के रूप में पहचाना जाएगा ताकि कई घटकों को शामिल किया जा सके। ध्यान दें कि यह विधि 'चरित्र को एन्कोड नहीं करती है, क्योंकि यह यूआरआई के भीतर एक मान्य चरित्र है।
encodeURIComponent() सांकेतिक शब्दों में बदलना होगा नहीं: ~ *() ' "
encodeURIComponent(): यह मानता है कि इसके तर्क एक हिस्से (जैसे प्रोटोकॉल, होस्टनाम, पथ, या क्वेरी स्ट्रिंग के रूप में) एक के । यूआरआई इसलिए यह विराम चिह्न वर्ण कि portionsof यूआरआई अलग करने के लिए उपयोग किया जाता है निकल जाता
encodeURI():। मौजूदा यूआरएल
एन्कोडिंग मामले में के लिए प्रयोग किया जाता है आप भी इन पात्रों सांकेतिक शब्दों में बदलना चाहते हैं: तो ! ' *) (
, समाधान है:
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
(source)
आपको url में उन charachters से बच नहीं होना चाहिए। – Arashsoft
जैसा कि उद्धृत दस्तावेज कहता है: "इन पात्रों में यूआरआई डिलीमिटिंग का औपचारिक उपयोग नहीं किया गया है" – caesarsol
@caesarsol तो, क्या मुझे अपना जवाब संपादित करना चाहिए। मुझे अपने विचारों को बताने दें क्योंकि मैं समझ नहीं पा रहा हूं कि उद्धृत दस्तावेज का क्या अर्थ है .. –
एक सामान्य नियम के उपयोग encodeURIComponent
के रूप में। लंबे नाम से डरो मत सोचें कि यह इसके उपयोग में अधिक विशिष्ट है, मेरे लिए यह अधिक सामान्य रूप से उपयोग की जाने वाली विधि है।इसके अलावा एन्कोडुरि का उपयोग करने में चकित न हों क्योंकि आपने इसका परीक्षण किया है और ऐसा लगता है कि यह ठीक से एन्कोडिंग प्रतीत होता है, शायद यह संभवतः आपके द्वारा उपयोग करने के लिए नहीं था और भले ही पहले नाम फ़ील्ड में "फ्रेड" का उपयोग करके आपका सरल परीक्षण काम करेगा, आपको मिलेगा बाद में जब आप एम्पर्सेंड या हैशटैग जोड़ने जैसे अधिक उन्नत टेक्स्ट का उपयोग करते हैं तो यह असफल हो जाएगा। आप कारणों के कारण अन्य उत्तरों को देख सकते हैं।
- 1. एचटीएमएल। क्या मुझे सीडीएटीए का उपयोग करना चाहिए या HTML
- 2. क्या मुझे आईपैयर या लूप के लिए उपयोग करना चाहिए
- 3. मुझे क्या gacutil.exe का उपयोग करना चाहिए?
- 4. क्या मुझे बूटस्ट्रैप का उपयोग करना चाहिए?
- 5. क्या मुझे WPF कनवर्टर या ट्रिगर का उपयोग करना चाहिए?
- 6. क्या मुझे eval() या call_user_func() का उपयोग करना चाहिए?
- 7. क्या मुझे एम या पीएक्स का उपयोग करना चाहिए?
- 8. क्या मुझे इंटरफ़ेस निर्माता का उपयोग करना चाहिए या नहीं?
- 9. क्या मुझे श्रोता या पर्यवेक्षक का उपयोग करना चाहिए?
- 10. क्या मुझे विरासत या संरचना का उपयोग करना चाहिए?
- 11. क्या मुझे डेटा.फ्रेम या मैट्रिक्स का उपयोग करना चाहिए?
- 12. क्या मुझे फ़्लैश या फ्लेक्स का उपयोग करना चाहिए?
- 13. जीयूआई। क्या मुझे एसडब्ल्यूटी या जीडब्ल्यूटी का उपयोग करना चाहिए?
- 14. क्या मुझे टेक्स्ट फ़ाइल या डेटाबेस का उपयोग करना चाहिए?
- 15. क्या मुझे डबल या फ्लोट का उपयोग करना चाहिए?
- 16. क्या मुझे अलार्ममेनगर या हैंडलर का उपयोग करना चाहिए?
- 17. क्या मुझे प्रोटोटाइप का उपयोग करना चाहिए या नहीं?
- 18. क्या मुझे स्लीप() का उपयोग करना चाहिए या बस उन्हें
- 19. क्या मुझे int या UInt16 का उपयोग करना चाहिए?
- 20. शेयरपॉइंट: क्या मुझे सूचियों या डेटाबेस का उपयोग करना चाहिए?
- 21. क्या मुझे jQuery.inArray() का उपयोग करना चाहिए?
- 22. क्या मुझे jQuery.each() का उपयोग करना चाहिए?
- 23. क्या मुझे AppDomain.CurrentDomain.BaseDirectory या System.Environment.CurrentDirectory का उपयोग करना चाहिए?
- 24. क्या मुझे scipy.pi, numpy.pi, या math.pi का उपयोग करना चाहिए?
- 25. क्या मुझे फोबोस या टैंगो का उपयोग करना चाहिए?
- 26. क्या मुझे HttpRuntime.Cache का उपयोग करना चाहिए?
- 27. क्या मुझे रूबी धागे का उपयोग करना चाहिए या थ्रेडिंग के लिए पूरी तरह रूबी का उपयोग नहीं करना चाहिए?
- 28. क्या मुझे गिट स्थिति का विश्लेषण करना चाहिए या गिटारप का उपयोग करना चाहिए?
- 29. HTTP पट के लिए मुझे किस एन्कोडिंग का उपयोग करना चाहिए?
- 30. क्या मुझे एमपी 3 या एएसी कोडेक का उपयोग .mp4 फ़ाइल के लिए करना चाहिए?
यह भी देखें http://stackoverflow.com/a/3608791/632951 – Pacerier
एक बड़ा अंतर यह है कि 'एनकोडुरि' '/' को एन्कोड नहीं करेगा: 'encodeURIComponent (" ac/dc ")' => 'ac % 2 एफडीसी' और 'एनकोडुरि (" एसी/डीसी ")' => 'एसी/डीसी' – JoeRocc