2011-07-28 17 views
39

मेरे पास सी # और एएसपीनेट का उपयोग करके बनाया गया एक वेबपैप है। मैंने प्लसस्ट्रिंग में प्लस मान को प्लस (+) चिह्न के साथ रखा है। लेकिन प्लस साइन गायब हो गया।प्लस साइन इन क्वेरी स्ट्रिंग

मैं गायब किए बिना क्वेरी स्ट्रिंग में प्लस साइन (+) कैसे शामिल कर सकता हूं?

कृपया सलाह दें।

धन्यवाद।

संपादित करें: UrlEncode

string str = Server.UrlEncode(Requery.QueryString["new"]); 
+0

क्या आपके पास कोड है? – tutts

+0

वास्तव में मूल्य उपयोगकर्ता इनपुट से निर्भर करता है। – domlao

+0

एफवाईआई 'यूआरएलबिल्डर' से सावधान रहें, यह थोड़ा बेकार लगता है, इस तरह मैंने आपके प्रश्न पर ठोकर खाई। Http://stackoverflow.com/questions/24576239/why-doesnt-uribuilder-query-escaping-url-encoding-the-query-string – KCD

उत्तर

81

+ साइन क्वेरी क्वेरी में अर्थपूर्ण अर्थ है। यह एक अंतरिक्ष का प्रतिनिधित्व करने के लिए प्रयोग किया जाता है। प्रश्न स्ट्रिंग में अर्थपूर्ण महत्व रखने वाला एक और चरित्र & है जिसका उपयोग क्वेरी स्ट्रिंग में विभिन्न var=value जोड़े को अलग करने के लिए किया जाता है।

अधिकांश सर्वर साइड स्क्रिप्ट उन्हें उपयोग करने से पहले क्वेरी पैरामीटर को डीकोड करेंगे, ताकि + सही ढंग से किसी स्थान पर परिवर्तित हो जाए। अब, यदि आप क्वेरी स्ट्रिंग में मौजूद होने के लिए एक शाब्दिक + चाहते हैं, तो आपको इसके बजाय %2B निर्दिष्ट करना होगा।

+ क्वेरी स्ट्रिंग में साइन इन करें URL को डीकोड किया गया है। क्वेरी स्ट्रिंग में %2B एक + चिह्न के लिए URL-decoded है।

http://www.google.com/search?q=foo+bar

और

http://www.google.com/search?q=foo%2Bbar

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

यूआरएल-एन्कोडिंग कुछ विशेष नहीं है लेकिन % चिह्न विशेष चरित्र के हेक्स-कोड के बाद है। उदाहरण के लिए, हम जानते हैं कि A का हेक्स कोड 0x41 (दशमलव: 65) है। इस प्रयास करें:

http://www.google.com/search?q=%41

आशा इस URL एन्कोडिंग स्पष्ट करता है।

तो, अगर आप चाहते हैं + संकेत किसी JavaScript अपनी क्वेरी पैरामीटर में + चिन्ह और एक सर्वर साइड स्क्रिप्ट यह यूआरएल-डिकोडिंग के बाद आप क्वेरी पैरामीटर प्रोसेस हैं के साथ एक URL प्राप्त करने में किया जाता है संरक्षित करने की है, तो आप चाहिए URL एन्कोड HTTP जारी करने का उपयोग करने से पहले यूआरएल में क्वेरी पैरामीटर अनुरोध प्राप्त करते हैं ताकि सभी + संकेत %2B के रूप में परिवर्तित हो जाएं जब अनुरोध सर्वर साइड स्क्रिप्ट तक पहुंच जाए।अब जब सर्वर साइड स्क्रिप्ट यूआरएल-क्वेरी स्ट्रिंग को डीकोड करता है, तो सभी %2B को वापस + संकेतों में परिवर्तित कर दिया जाता है जो आप चाहते हैं।

जावास्क्रिप्ट का उपयोग कर पैरामीटर को यूआरएल-एन्कोड करने के तरीके को जानने के लिए Encode URL in JavaScript? देखें। वहाँ चर्चा से संक्षिप्त उत्तर:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param); 
+0

मैं जावास्क्रिप्ट में + साइन से% 2B को कैसे बदल सकता हूं। क्योंकि मैं जावास्क्रिप्ट में अपना क्वेरीस्ट्रिंग बना रहा हूं। – domlao

+1

क्रैकैट, देखें http://stackoverflow.com/q/332872/303363 –

4

के साथ जोड़ा कोड आपको यह सुनिश्चित करना कोई विशेष वर्ण खो नहीं कर रहे हैं बनाने के लिए अपनी क्वेरी स्ट्रिंग मान URLEncode चाहिए।

+0

नहीं है, स्ट्रिंग str = server.UrlEncode (Requery.QueryString [ 'नई']); ? धन्यवाद – domlao

+0

बिल्कुल नहीं, आपको उन्हें वापस ले जाने के बजाय क्वेरी स्ट्रिंग में डालने से पहले उन्हें एन्कोड करने की आवश्यकता है। आप क्वेरी स्ट्रिंग में मान कैसे सेट कर रहे हैं? – DoctorMick

+0

जावास्क्रिप्ट में, जैसे $ ("# बीटीएन")। क्लिक करें (फ़ंक्शन() {var param = "C++"; ...}); – domlao

0

मैं अपना पिछला कथन बदलता हूं ताकि कोई भी भ्रमित न हो!

Server.UrlEncode का उपयोग करके अपना यूआरएल बनाएं। उदा।

string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1"); 
+1

यदि यह एक यूआरएल के लिए है, तो आपको यूआरएल एनकोड, ** नहीं ** एचटीएमएल एनकोड होना चाहिए। वे भिन्न हैं। –

+0

मैंने जावास्क्रिप्ट में अपनी क्वेरीस्ट्रिंग को जोड़ा, क्या जावास्क्रिप्ट में इसे एन्कोड करने का कोई संभावित तरीका है? – domlao

+0

आप सही हैं !!! किसी भी असुविधा के लिए खेद है !! – gred

2

HTML URL Encoding Reference

आप + चिह्न सांकेतिक शब्दों में बदलना करने की आवश्यकता है देखें - वह मूल्य% 2 बी

-1

होना चाहिए समाधान हमेशा .Replace (शामिल हैं "करने के लिए है" , "+") जब आप क्वेरीस्ट्रिंग

स्ट्रिंग एस = Request.QueryString ["id"] का अनुरोध करते हैं। ट्रिम()। बदलें ("", "+");

स्रोत: http://www.webmasterworld.com/forum47/3238.htm

-1

इस प्रयास करें, यह मेरे लिए काम करता है:

Request.QueryString["new"].Trim(); 
0

अन्य आसान तरीका है, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) यह सोचते हैं कि मेरी यूआरएल है, http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

-1

डिक्रिप्ट funcation में इस लाइन में जोड़ें:

strText = strText.Replace(" ", "+"); 
+1

अन्य आरक्षित पात्रों के बारे में क्या? यह समाधान केवल + को ठीक करेगा, न कि? और आदि –

0

आपको बराबर भेजने से पहले ameter, आप जांच अगर पैरामीटर धन चिह्न शामिल हैं की जरूरत है, तो आप, एक ध्वज को बदलने के की जरूरत है है उदाहरण के लिए: पैरामीटर है: klasjdlkasd + djid3223 आप की जगह ले सकता: klasjdlkasdFLAGdjid3223

और जब आप परिवर्तित होने लगते हैं, आप की जरूरत प्रतिस्थापित

klasjdlkasd + djid3223

संबंधित मुद्दे