2009-09-22 20 views
10

जब मैं अपनी प्रोजेक्ट चलाता हूं तो मुझे यूआरएल http://localhost:5973/PageToPageValuePass/Default.aspx मिलता है, मैं यूआरएल को एन्कोड करना चाहता हूं क्योंकि कभी-कभी मुझे पेज से पेज पर डेटा स्थानांतरित करने की आवश्यकता होती है। जब यूआरएल एन्कोड किया जाता है तो यह विश्वसनीयता को बढ़ाता है।मैं एक यूआरएल कैसे एन्कोड कर सकता हूं?

Server.UrlEncode("http://www.google.com/c#"); 

मुझे यह मिलता है, लेकिन मैं यूआरएल को एन्कोड करने में मेरी सहायता के लिए इसका उपयोग कैसे करूं?

+18

27 सवाल और 0% का उपयोग कर स्वीकार? आप कितने क्रूर हो सकते हैं। – Matt

+0

क्या आप अपने प्रश्न को स्पष्ट कर सकते हैं? क्या आप पूछ रहे हैं कि यूआरएल एन्कोडिंग कैसे काम करती है? या एक पुस्तकालय के लिए जो इसे आपके लिए संभाल लेगा? या क्या आपके पास एक विशिष्ट उपयोग केस है जहां यह काम नहीं कर रहा है? – atk

+4

@envalid: मुझे नहीं लगता कि विशेषण "क्रूर" यहां उपयुक्त है। एक बेहतर वर्णन "अनजान, असंगत और असभ्य" होगा! ;-) – Cerebrus

उत्तर

3

यूआरएल एन्कोडिंग का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि यूआरएल (विशेष रूप से क्वेरीस्ट्रिंग में) में विशेष प्रतीकों को शामिल किया गया है, जिसे गलती से यूआरएल की पार्सिंग और प्रसंस्करण में उपयोग नहीं किया जाता है। उदाहरण के लिए, + प्रतीक का उपयोग यूआरएल में एक स्थान को इंगित करने के लिए किया जाता है। हालांकि, अगर आप अपने क्वेरीस्ट्रिंग का हिस्सा बनने के लिए + प्रतीक के लिए इच्छुक थे तो आप ब्राउज़र पर भेजने से पहले उस क्वेरीस्ट्रिंग को एन्कोड करना चाहते हैं।

उदाहरण के लिए

। कल्पना कीजिए कि आपने एक पृष्ठ लिखा है जो क्वेरीस्ट्रिंग पर गणित समीकरण प्राप्त करता है और पृष्ठ पर समीकरण प्रदर्शित करता है।

यूआरएल हो सकता है: http://yoursite.com/displayMath.aspx?equation=3+5

इस मामले में + प्रतीक समीकरण का एक सार्थक हिस्सा बनने के लिए करना है। हालांकि, UrlEncode के बिना इसे एक स्थान का प्रतिनिधित्व करने के रूप में व्याख्या किया जाएगा। प्राप्तकर्ता पृष्ठ पर क्वेरीस्ट्रिंग से इस मान को पढ़ने से "3 5" उत्पन्न होगा, जो कि इरादा नहीं था।

सीधे उस यूआरएल पर रीडायरेक्ट करने के बजाय, आप पहले अनुरोध को एन्कोड करना चाहते हैं।

string equation = "3+5";
string url = String.Format(@"http://yoursite.com/displayMath.aspx?equation={0}", equation);
string encodedUrl = Server.UrlEncode(url);
Response.Redirect(encodedUrl);

इससे यह सुनिश्चित होता है कि बाद में एक Request.Querystring["equation"] समीकरण बरकरार प्राप्त होगा क्योंकि किसी भी विशेष प्रतीकों पहले इनकोडिंग किया जाएगा: आप निम्नलिखित कोड लिख सकते हैं।

मुझे यकीन नहीं है कि मैं यूआरएल एन्कोडिंग के लिए आपके उपयोग के मामले को समझता हूं। यदि आप शायद जो कुछ हासिल करने की कोशिश कर रहे हैं उस पर अधिक जानकारी प्रदान कर सकते हैं तो मैं अधिक जवाब देने का प्रयास करूंगा। अभी के लिए मुझे आशा है कि यह जानकारी उपयोगी है।

35

तो पथ के अपने एन्कोडिंग भागों:

System.Uri.EscapeUriString("c#") 

यदि आपका एन्कोडिंग 'तर्क':

String.Format("http://something/?test={0}", System.Uri.EscapeDataString("c#")); 
+3

+1 EscapeUriString() के उपयोग के लिए +1। – Cerebrus

+0

'। यूआरएलएनकोड (...) 'विषय या शरीर के साथ' mailto' 'href' के लिए बेकार है। +1 – it3xl

0

कहते हैं कि तुम आप इसका इस्तेमाल कर सकते हैं कुछ मानकों के साथ एक लिंक बनाना चाहते हैं इस प्रकार है:

aspx:

यहाँ क्लिक करें

पीछे

कोड:

myLink.Href = Page.ResolveClientUrl("~/MyPage.aspx") + "?id=" + 
    Server.UrlEncode("put here what ever you want to url encode"); 

या अपने प्रश्न में के रूप में:

myLink.Href = "http://www.google.com/")+Server.UrlEncode("C#"); 

इस html में रखा जाएगा:

<a id="myLink" runat="server" target="_self" href="http://www.google.com/c+c%23"> 
6

इस

    एएसपी में
  • प्रयास करें।नेट
 
Server.UrlEncode("http://www.google.com/c#");
  • WinForms में System.Web.dll

     
    HttpUtility.UrlEncode("http://www.google.com/c#");
संबंधित मुद्दे