दिलचस्प पोस्ट
उप-वर्ग या समूह के साथ छोड़ दिया गया जिसके द्वारा एक तेज़ हो? स्ट्रिंग सी # में किसी वर्ण की सबसे अधिक घटना का पता लगाएं? स्ट्रिंग मिलान करने के बाद शब्द प्राप्त करने के लिए रेगेक्स क्या जावा के डिफॉल्ट पैकेज का एक बुरा अभ्यास है? मैं "हंगेरियन नोटेशन" का उपयोग क्यों नहीं करना चाहिए? HTML इनपुट एरेज़ क्या मैं विशिष्ट दृश्य नियंत्रक को पॉप कर सकता हूं? ViewPager और टुकड़े – टुकड़ा की स्थिति को स्टोर करने का सही तरीका क्या है? पीएचपी सत्र निर्धारण / अपहरण हमें अचल वर्ग की आवश्यकता क्यों है? एसडीके संस्करण / लक्ष्य एसडीके वर्जन बनाम एसडीके संस्करण संकलन के बीच अंतर क्या है? कनवर्ट फ़ाइल: उरी एंड्रॉइड में फाइल करने के लिए NSMutableURL अनुरोध समय के अंतराल को POST अनुरोधों के लिए विचाराधीन नहीं किया गया JSON.stringify गहरी वस्तुओं परम्परागत रूप से "System.Collections.Generic.IEnumerable" टाइप कर सकते हैं, नहीं करने के लिए: System.Collections.Generic.List <string>

जब आप encodeuri / encodeurcomponent के बजाय भागने का उपयोग करना चाहते हैं?

जब किसी वेब सर्वर पर भेजा जाने वाला कोई क्वेरी स्ट्रिंग एन्कोड करते हैं – आप कब से escape() और कब आप encodeURI() या encodeURIComponent() उपयोग करते हैं:

भागने का उपयोग करें:

 escape("% +&="); 

या

एनकोडयूआरआई () / एनकोडयूआरआईआईएमएन्ट () का उपयोग करें

 encodeURI("http://www.google.com?var1=value1&var2=value2"); encodeURIComponent("var1=value1&var2=value2"); 

वेब के समाधान से एकत्रित समाधान "जब आप encodeuri / encodeurcomponent के बजाय भागने का उपयोग करना चाहते हैं?"

पलायन()

अपवाद के साथ विशेष वर्ण एन्कोडेड हैं: @ * _ + -। /

अक्षरों के लिए हेक्साडेसिमल फ़ॉर्म, जिनके कोड इकाई मान 0xFF या उससे कम है, एक दो अंकीय एस्केप अनुक्रम है:% xx। अधिक कोड इकाई वाले वर्णों के लिए, चार अंकों वाले प्रारूप% uxxxx का उपयोग किया जाता है।

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape

encodeURI ()

जब आप एक कामकाजी यूआरएल चाहते हैं तो एनकोडयूआरआई का उपयोग करें। यह कॉल करें:

 encodeURI("http://www.example.org/a file with spaces.html") 

लेना:

 http://www.example.org/a%20file%20with%20spaces.html 

एनकोडुरआईकॉम्पोनेंट को कॉल न करें क्योंकि यह यूआरएल को नष्ट कर देगा और वापसी करेगा

 http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html 

encodeURIComponent ()

जब आप किसी यूआरएल पैरामीटर के मान को एन्कोड करना चाहते हैं तो एन्कोडरआईकंपोनेंट का उपयोग करें।

 var p1 = encodeURIComponent("http://example.org/?a=12&b=55") 

फिर आप उस URL को बना सकते हैं, जिसकी आपको आवश्यकता है:

 var url = "http://example.net/?param1=" + p1 + "&param2=99"; 

और आपको यह पूरा यूआरएल मिलेगा:

http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55&param2=99

ध्यान दें कि एन्कोडरआईकॉन्पेंन्ट ' चरित्र से बच नहीं सकता है एक सामान्य बग यह है कि HTML गुणों जैसे कि href='MyUrl' बनाने के लिए इसका उपयोग करना है, जो इंजेक्शन बग को भुगत सकता है। यदि आप स्ट्रिंग्स से html का निर्माण कर रहे हैं, तो या तो विशेषता कोट्स के लिए ' बजाय ' का उपयोग करें, या एन्कोडिंग ( ' % 27 के रूप में एन्कोडेड किया जा सकता है) का एक अतिरिक्त परत जोड़ें '

इस प्रकार के एन्कोडिंग पर अधिक जानकारी के लिए आप जांच सकते हैं: http://en.wikipedia.org/wiki/Percent-encoding

encodeURI() और encodeURIComponent() बीच का अंतर encodeURI() द्वारा एन्कोड किया गया 11 अक्षर हैं, लेकिन एन्कोडयूआरआई द्वारा नहीं:

एनकोडयूआरआई और एन्कोडरआईकोन के बीच दस अंतर के साथ तालिका

मैंने इस तालिका को इस कोड के साथ Google Chrome में कंसोल में आसानी से जनरेट किया है:

 var arr = []; for(var i=0;i<256;i++) { var char=String.fromCharCode(i); if(encodeURI(char)!==encodeURIComponent(char)) { arr.push({ character:char, encodeURI:encodeURI(char), encodeURIComponent:encodeURIComponent(char) }); } } console.table(arr); 

मुझे यह आलेख प्रबुद्ध हुआ: जावास्क्रिप्ट पागलपन: क्वेरी स्ट्रिंग पार्सिंग

मुझे यह पता चला जब मैं अंडरर्संड की कोशिश कर रहा था कि क्यों डीकोडुरिकमॉपोनेंट '+' सही ढंग से डीकोड नहीं कर रहा था यहाँ एक उद्धरण है:

 String: "A + B" Expected Query String Encoding: "A+%2B+B" escape("A + B") = "A%20+%20B" Wrong! encodeURI("A + B") = "A%20+%20B" Wrong! encodeURIComponent("A + B") = "A%20%2B%20B" Acceptable, but strange Encoded String: "A+%2B+B" Expected Decoding: "A + B" unescape("A+%2B+B") = "A+++B" Wrong! decodeURI("A+%2B+B") = "A+++B" Wrong! decodeURIComponent("A+%2B+B") = "A+++B" Wrong! 

एन्कोडरआईकॉन्पेंन्ट एन्कोड नहीं करता है – _ -_.!~*'() , एक्सएमएल स्ट्रिंग में डेटा पोस्ट करने में समस्या पैदा कर रहा है

उदाहरण के लिए:
<xml><text x="100" y="150" value="It's a value with single quote" /> </xml>

encodeURI साथ सामान्य बच
%3Cxml%3E%3Ctext%20x=%22100%22%20y=%22150%22%20value=%22It's%20a%20value%20with%20single%20quote%22%20/%3E%20%3C/xml%3E

आप देख सकते हैं, एकल उद्धरण एन्कोडेड नहीं है। समस्या को सुलझाने के लिए मैंने अपने प्रोजेक्ट में एन्कोडिंग यूआरएल के लिए दो कार्यों का समाधान किया:

 function encodeData(s:String):String{ return encodeURIComponent(s).replace(/\-/g, "%2D").replace(/\_/g, "%5F").replace(/\./g, "%2E").replace(/\!/g, "%21").replace(/\~/g, "%7E").replace(/\*/g, "%2A").replace(/\'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29"); } 

डिकोडिंग यूआरएल के लिए:

 function decodeData(s:String):String{ try{ return decodeURIComponent(s.replace(/\%2D/g, "-").replace(/\%5F/g, "_").replace(/\%2E/g, ".").replace(/\%21/g, "!").replace(/\%7E/g, "~").replace(/\%2A/g, "*").replace(/\%27/g, "'").replace(/\%28/g, "(").replace(/\%29/g, ")")); }catch (e:Error) { } return ""; } 

एनकोडयूआरआई () – एस्केप () फ़ंक्शन जावास्क्रिप्ट से बचने के लिए है, न कि HTTP

छोटे तुलना तालिका जावा बनाम जावास्क्रिप्ट बनाम PHP

 1. Java URLEncoder.encode (using UTF8 charset) 2. JavaScript encodeURIComponent 3. JavaScript escape 4. PHP urlencode 5. PHP rawurlencode char JAVA JavaScript --PHP--- [ ] + %20 %20 + %20 [!] %21 ! %21 %21 %21 [*] * * * %2A %2A ['] %27 ' %27 %27 %27 [(] %28 ( %28 %28 %28 [)] %29 ) %29 %29 %29 [;] %3B %3B %3B %3B %3B [:] %3A %3A %3A %3A %3A [@] %40 %40 @ %40 %40 [&] %26 %26 %26 %26 %26 [=] %3D %3D %3D %3D %3D [+] %2B %2B + %2B %2B [$] %24 %24 %24 %24 %24 [,] %2C %2C %2C %2C %2C [/] %2F %2F / %2F %2F [?] %3F %3F %3F %3F %3F [#] %23 %23 %23 %23 %23 [[] %5B %5B %5B %5B %5B []] %5D %5D %5D %5D %5D ---------------------------------------- [~] %7E ~ %7E %7E ~ [-] - - - - - [_] _ _ _ _ _ [%] %25 %25 %25 %25 %25 [\] %5C %5C %5C %5C %5C ---------------------------------------- char -JAVA- --JavaScript-- -----PHP------ [ä] %C3%A4 %C3%A4 %E4 %C3%A4 %C3%A4 [ф] %D1%84 %D1%84 %u0444 %D1%84 %D1%84 

यह भी याद रखें कि वे सभी अलग-अलग वर्णों के सांकेतिक शब्दों में सांकेतिक शब्दों में बदलते हैं, और जिसे आप उचित तरीके से चुनते हैं उसका चयन करें एन्कोडयूआरआई () एन्कोडुरिकोमोनेंट () से कम वर्णों को एन्कोड करता है, जो एस्केप () से कम वर्ण (और भी अलग, डैनीप के बिंदु के लिए)

मैं उन विधियों में से एक का उपयोग न करने की सलाह देता हूं अपना काम लिखें जो सही काम करता है

एमडीएन ने नीचे दिखाए गए यूआरएल एन्कोडिंग पर एक अच्छा उदाहरण दिया है।

 var fileName = 'my file(2).txt'; var header = "Content-Disposition: attachment; filename*=UTF-8''" + encodeRFC5987ValueChars(fileName); console.log(header); // logs "Content-Disposition: attachment; filename*=UTF-8''my%20file%282%29.txt" function encodeRFC5987ValueChars (str) { return encodeURIComponent(str). // Note that although RFC3986 reserves "!", RFC5987 does not, // so we do not need to escape it replace(/['()]/g, escape). // ie, %27 %28 %29 replace(/\*/g, '%2A'). // The following are not required for percent-encoding per RFC5987, // so we can allow for a little better readability over the wire: |`^ replace(/%(?:7C|60|5E)/g, unescape); } 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

मैंने पाया है कि विभिन्न तरीकों से प्रयोग करना एक अच्छा विवेकपूर्ण जांच है, इसके बाद भी उनके विभिन्न उपयोगों और क्षमताओं का अच्छा संभाल होने के बावजूद।

उस अंत में मैंने इस वेबसाइट को मेरे संदेह की पुष्टि के लिए बहुत उपयोगी पाया है कि मैं कुछ उचित तरीके से कर रहा हूं। यह एक एनकोडुरआईकॉन्टन की स्ट्रिंग को डीकोड करने के लिए भी उपयोगी साबित हुआ है जो व्याख्या करने के बजाय चुनौतीपूर्ण हो सकता है एक महान बुकमार्क है:

http://www.the-art-of-web.com/javascript/escape/

एन्कोडिंग जावास्क्रिप्ट के प्रयोजन के लिए तीन इनबिल्ट फ़ंक्शन दिए गए हैं –

  1. एस्केप () – एन्कोड नहीं @*/+ इस पद्धति को ईसीएमए 3 के बाद पदावनत किया गया है ताकि इसे टाला जाना चाहिए।

  2. एन्कोडयूआरआई () – एन्कोड नहीं है ~!@#$&*()=:/,;?+' यह मानता है कि यूआरआई एक पूर्ण यूआरआई है, इसलिए उन आरक्षित वर्णों को एन्कोड नहीं करता जो यूआरआई में विशेष अर्थ रखते हैं। इस पद्धति का उपयोग तब किया जाता है जब यूआरएल के कुछ विशेष सेगमेंट के बजाय पूरे यूआरएल को बदलना है। उदाहरण – encodeURI('http://stackoverflow.com'); दे देंगे – http://stackoverflow.com

  3. एन्कोडुरिक कॉमपेंन्ट () - _ . ! ~ * ' ( ) नहीं सांकेतिक शब्दों में बदलना - _ . ! ~ * ' ( ) - _ . ! ~ * ' ( ) - _ . ! ~ * ' ( ) यह फ़ंक्शन एक यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (यूआरआई) घटक को एक अक्षर, दो, तीन, या चार वर्णों के यूटीएफ -8 एन्कोडिंग का प्रतिनिधित्व करने वाली एस्केप अनुक्रमों द्वारा प्रत्येक वर्ण के प्रत्येक उदाहरण को बदलकर एक ही जगह लेता है। इस पद्धति का उपयोग यूआरएल के घटक को कन्वर्ट करने के लिए किया जाना चाहिए। उदाहरण के लिए कुछ उपयोगकर्ता इनपुट को जोड़ा जाना चाहिए उदाहरण – encodeURI('http://stackoverflow.com'); दे देंगे – http% 3A% 2F% 2Fstackoverflow.com

यह सब एन्कोडिंग यूटीएफ 8 में किया जाता है अर्थात ये अक्षर यूटीएफ -8 प्रारूप में परिवर्तित हो जाएंगे।

एन्कोडुरिक घटक अलग-अलग एनकोडयूआरआई से भिन्न होता है, इसमें सांकेतिक वर्णों को आरक्षित वर्ण और सांकेतिक अक्षर की संख्या #

मेरे पास यह फ़ंक्शन है …

 var escapeURIparam = function(url) { if (encodeURIComponent) url = encodeURIComponent(url); else if (encodeURI) url = encodeURI(url); else url = escape(url); url = url.replace(/\+/g, '%2B'); // Force the replacement of "+" return url; }; 

स्वीकृत जवाब अच्छा है पिछले भाग में विस्तार करने के लिए:

ध्यान दें कि एन्कोडरआईकॉन्पेंन्ट 'चरित्र से बच नहीं सकता है एक सामान्य बग यह है कि HTML गुणों जैसे कि href = 'MyUrl' बनाने के लिए इसका उपयोग करना है, जो इंजेक्शन बग को भुगत सकता है। यदि आप स्ट्रिंग्स से html का निर्माण कर रहे हैं, तो या तो विशेषता कोट्स के लिए 'के बजाय' का उपयोग करें, या एन्कोडिंग ('% 27 के रूप में एन्कोडेड किया जा सकता है) का एक अतिरिक्त परत जोड़ें'।

यदि आप सुरक्षित पक्ष पर होना चाहते हैं, तो अनारक्षित वर्णों को एन्कोडिंग प्रतिशत भी एन्कोड किया जाना चाहिए।

आप उन्हें बचने के लिए इस पद्धति का उपयोग कर सकते हैं (स्रोत मोज़िला )

 function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); } // fixedEncodeURIComponent("'") --> "%27"