साथ ही क्वेरी स्ट्रिंग में साइन इन करें


86

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

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

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

धन्यवाद।

संपादित करें: UrlEncode के साथ जोड़ा गया कोड

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

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

FYI करें खबरदार UrlBuilder, यह थोड़ा बेकार लगता है जो कि कैसे मैं आपके सवाल पर ठोकर खाई है। देखें stackoverflow.com/questions/24576239/…
— KCD

* UriBuilderUrl नहीं
— KCD

जवाबों:


146

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

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

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

के बीच का अंतर देखें

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

तथा

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

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

URL-एन्कोडिंग और कुछ नहीं है, लेकिन %विशेष वर्ण के हेक्स-कोड के बाद हस्ताक्षर है। उदाहरण के लिए, हम जानते हैं कि हेक्स कोड A0x41 (दशमलव: 65) है। इसे इस्तेमाल करे:

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

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

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

जावास्क्रिप्ट में एनकोड URL देखें ? यह जानने के लिए कि जावास्क्रिप्ट का उपयोग करके मापदंडों को URL-एनकोड कैसे करें। वहाँ चर्चा से छोटा जवाब:

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

1
मैं जावास्क्रिप्ट में + साइन को% 2B में कैसे बदल सकता हूं। क्योंकि मैं जावास्क्रिप्ट में अपने querystring बना रहा हूं।
— डोमलो

5

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


1
इस तरह, स्ट्रिंग str = Server.UrlEncode (Requery.QueryString ["नया"]); ? धन्यवाद
— domlao

काफी नहीं, आपको उन्हें वापस बाहर ले जाने के बजाय क्वेरी स्ट्रिंग में डालने से पहले उन्हें एनकोड करना होगा। आप क्वेरी स्ट्रिंग में मान कैसे सेट कर रहे हैं?
— डॉक्टर मिक जूल 28'11

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

4

को देखो एचटीएमएल यूआरएल एन्कोडिंग संदर्भ

आपको + साइन इनकोड करने की आवश्यकता है - यह मान 2B होना चाहिए


+क्वेरी पैरामीटर मान में साइन की अनुमति है, जहां इसे एन्कोड नहीं किया जाना चाहिए, क्योंकि यह पहले से ही 'स्पेस' को एन्कोड करता है
— ZZ 5

1

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

Server.UrlEncode का उपयोग करके अपना url बनाएं। जैसे

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

3
यदि यह URL के लिए है, तो आपको URL Encode चाहिए, न कि Html Encode। वे कर रहे हैं अलग।
— डेमियन___बेलिवर्स

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

0

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


0

आपको पैरामीटर भेजने से पहले, आपको चेक की आवश्यकता है कि क्या पैरामीटर में प्लस साइन है, यदि आपको एक ध्वज की जगह की आवश्यकता है, उदाहरण के लिए: पैरामीटर है: klasjdlkasd + djid3223 क्या आप प्रतिस्थापित कर सकते हैं: klasjdlkaskFLFLDdjid3223

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

कालजडक्लासड + djid3223




-2

इस पंक्ति को डिक्रिप्ट फ़ंक्शंस में जोड़ें:

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

2
अन्य आरक्षित वर्णों के बारे में क्या? यह समाधान केवल + को ठीक करेगा, और नहीं? और आदि
— जॉन मैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.