2009-10-04 11 views
53

में% 20 के साथ सभी रिक्त स्थानों को कैसे बदलूं, मैं सी # का उपयोग करके एक यूआरएल में एक स्ट्रिंग बनाना चाहता हूं, .NET Framework में कुछ होना चाहिए जो मदद करनी चाहिए, है ना?मैं सी #

+0

यह सवाल शीर्षक सवाल मेल नहीं खाता। सी # में% 20 (शीर्षक) के साथ सभी रिक्त स्थानों को प्रतिस्थापित करने के लिए आप 'स्ट्रिंग। रीप्लेस ("", "% 20") का उपयोग कर सकते हैं। यदि आप एक यूआरएल बना रहे हैं तो आपको केवल एक स्ट्रिंग में यूआरएल वैल्यू डालना होगा: 'string url = "https: // site/app /? Q = बिल्लियों" लेकिन यदि ओपी एक यूआरएल पास करने के बारे में बात कर रहा था एक और यूआरएल के हिस्से के रूप में पैरामीटर प्राप्त करें जो पूरी तरह से कुछ और है, जो कि एएसपी.NET (या जो कुछ भी) में एक HTML एंकर टैग में एक यूआरएल उत्सर्जित करता है, कहता है। – nothingisnecessary

उत्तर

51

मुझे विश्वास है कि आप HttpServerUtility.UrlEncode देख रहे हैं।

System.Web.HttpUtility.UrlEncode(string url) 
+2

मुझे लगता है [Uri.EscapeUriString()] (https://msdn.microsoft.com/en-us/library/system.uri.escapeuristring%28v=vs.110%29.aspx) हमारे पास उचित विधि है इसके बारे में धार्मिक होने के लिए :) –

+10

@StoyanDimov: 'EscapeUriString()' से बच नहीं है 'और' न ''' 'और न ही'?', इसलिए 'EscapeDataString()' उपयोग करने वाला एक प्रतीत होता है। –

+3

किसी ने इस प्रश्न को पूरी तरह उत्तर देने के लिए संपादित किया था। हम [किसी विशेष पोस्ट के अर्थ को बदलने के लिए संपादन का उपयोग नहीं करना चाहिए] (http://stackoverflow.com/help/editing)। – palswim

-2

HttpServerUtility.HtmlEncode

डॉक्स से:

String TestString = "This is a <Test String>."; 
String EncodedString = Server.HtmlEncode(TestString); 

अद्यतन: यह वास्तव में एचटीएमएल नहीं Urls encodes। UrlEncode (TestString) का उपयोग करें जो हर किसी से बेहतर पढ़ सकता है। एचटीएमएल एन्कोडिंग की तलाश करते समय किसी को इस थ्रेड को बंद करने के मौके पर इसे हटा नहीं रहा है।

+3

के अच्छे राउंड-ट्रिप उपयोग के लिए जावास्क्रिप्ट द्वारा ठीक से डीकोड किया जा सकता है ओपी यूआरएल एन्कोडिंग के बारे में पूछ रहा है; एचटीएमएल एन्कोडिंग नहीं। यह केवल –

+0

नहीं, यह HTML एन्कोडिंग, नहीं URL एन्कोडिंग (जैसा कि नाम का तात्पर्य ...) –

+0

हाँ, तुम सही हो, यूआरएल एन्कोड करने के लिए UrlEncode() का उपयोग करने के लिए है 'बचें' और 'अक्षर' नहीं। –

89

ऐसा करने का एक और तरीका है Uri.EscapeUriString(stringToEscape) उपयोग कर रहा है।

+4

दुर्भाग्य HTML निकाय एन्कोड करने के लिए है, इस पद्धति नहीं करता है - –

+15

यह '=' से नहीं बचता है, न ही '?'। ऐसा लगता है कि 'Uri.EscapeDataString()' जाने का रास्ता है। –

40

मैं उपयोगी System.Web.HttpUtility.UrlPathEncode(string str);

यह 20% के साथ रिक्त स्थान को बदल देता है और साथ नहीं + पाया।

+0

ऐसा लगता है कि कोई UrlPathDecode विधि नहीं है? – syclee

+0

कम से कम 4.0 में है। System.Web.HttpUtility.UrlDecode ("एक% 20b") "बी" – Abacus

+2

उत्पन्न करता है यह काम करता है लेकिन ब्राउज़र के लिए यह उपयोग नहीं करता है। इसके बजाय Uri.EscapeUriString (STRING) का उपयोग करें। एमएसडीएन: "उपयोग न करें; केवल ब्राउज़र संगतता के लिए लक्षित है। UrlEncode का उपयोग करें।" http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.urlpathencode.aspx – VRC

15

रिक्त स्थान के साथ-साथ शेष विशेष पात्रों से बचने के लिए, System.Uri.EscapeDataString(string stringToEscape) का उपयोग करें।

+1

तो एक [टिप्पणी है एक वास्तविक जवाब] (http://stackoverflow.com/questions/1517586/how-do-i-replace-all-the-spaces-with-20-in-c-sharp/36462468#comment_1517592), किसी को इसे प्रश्न के उत्तर देने की जरूरत है। – palswim

+0

हाँ, यह एक अंतरिक्ष, # और%, लेकिन एनकोड/संभालती% 2f – kite

0

मुझे यह भी करने की ज़रूरत है, इस सवाल को कई साल पहले मिला, लेकिन प्रश्न शीर्षक और पाठ काफी मेल नहीं खाता है, और Uri.EscapeDataString या UrlEncode का उपयोग करके (कृपया इसका उपयोग न करें!) आमतौर पर समझ में नहीं आता है जब तक हम अन्य यूआरएल के पैरामीटर के रूप में यूआरएल पास करने के बारे में बात नहीं कर रहे हैं।

(उदाहरण के लिए, एक कॉलबैक URL गुजर जब खुले ID प्रमाणीकरण, Azure AD, आदि कर)

आशा इस सवाल का अधिक व्यावहारिक जवाब है: मैं सी # का उपयोग कर एक URL में एक स्ट्रिंग बनाना चाहते , .NET ढांचे में कुछ होना चाहिए जो मदद करनी चाहिए, है ना?

हाँ - दो कार्य यूआरएल

इस कोड में कोई पैरामीटर से बचने के लिए URL

  • Uri.EscapeDataString फ़ॉर्मेट करने के लिए सी #

    • String.Format में URL तार बनाने के लिए सहायक होते हैं

      String.Format("https://site/app/?q={0}&redirectUrl={1}", 
          Uri.EscapeDataString("search for cats"), 
          Uri.EscapeDataString("https://mysite/myapp/?state=from idp")) 
      

      इस परिणाम

      पैदा करता

      https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp

      जो सुरक्षित रूप से कॉपी किया जा सकता है और एक ब्राउज़र के एड्रेस बार में पेस्ट कर दिया है, या एक एचटीएमएल A टैग की src विशेषता, या curl के साथ प्रयोग किया, या इनकोडिंग एक QR कोड में, आदि।

  • +0

    और जावास्क्रिप्ट बराबर 'की तरह कुछ होगा" https: // साइट/एप्लिकेशन/q = "+ encodeURIComponent (" बिल्लियों के लिए खोज ") + "और redirectUrl =" + encodeURIComponent ("https: // mysite/myapp /? state = idp से") 'जो एक ही आउटपुट उत्पन्न करता है। – nothingisnecessary

    2

    अनुमोदित कहानी पर टिप्पणी के रूप में, HttpServerUtility.UrlEncode विधि के साथ + बजाय 20% की रिक्त स्थान बदल देता है। उपयोग के बजाय इन दोनों तरीकों में से एक: Uri.EscapeUriString() या Uri.EscapeDataString()

    नमूना कोड:

    HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg") 
    //"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg" 
    
    Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg"); 
    //"https://mywebsite.com/api/get%20me%20this%20file.jpg" 
    Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg"); 
    //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg" 
    
    //When your url has a query string: 
    Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); 
    //"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg" 
    Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); 
    
    //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"