ASP.NET कोर में URL एनकोड और डिकोड


113
HttpContext.Current.Server.UrlEncode

यह केवल .NET फ्रेमवर्क में काम करता है। मैं ASP.NET कोर प्रोजेक्ट में uri तर्कों को कैसे एनकोड या डीकोड कर सकता हूं?


2
ASP.NET Core में कोई HttpContext नहीं है - या कोई भी गैर-वेब परियोजना नहीं है। उरी कक्षा के तरीकों के माध्यम से एक ही विधि उपलब्ध है, जैसे कि उरी। ईस्केपडाटास्ट्रिंग , उरी। ईस्केप यूरीस्ट्रिंग
पनगीओटीस कानावोस

1
@PanagiotisKanavos गलत - कोई भी नहीं है, HttpContext.Currentलेकिन HttpContext.Net कोर का एक हिस्सा है - Microsoft.AspNetCore.Http.HttpContext। यह याद रखें
जे। डो।

पूरी टिप्पणी पढना याद रखें। आपके द्वारा उल्लिखित HttpContext पिछले संस्करणों के HttpContext से बहुत अलग है। यह कहीं अधिक सामान्य उरी तरीकों का उपयोग करने के लिए
पानागिओटिस Kanavos

जवाबों:


186
  • ASP.NET Core 2.0+ के लिए केवल System.Netनाम स्थान जोड़ें - WebUtilityवर्ग को System.Runtime.Extensionsnuget पैकेज के भाग के रूप में शिप किया गया है , जो ASP.NET कोर प्रोजेक्ट में डिफ़ॉल्ट रूप से संदर्भित है।

  • पिछले संस्करण के लिए Microsoft.AspNetCore.WebUtilitiesनगेट पैकेज जोड़ें ।

फिर WebUtilityकक्षा आपके लिए उपलब्ध होगी:

public static class WebUtility
{
    public static string UrlDecode(string encodedValue);
    public static string UrlEncode(string value);
}

6
एसडीके 2.0.0+ के खिलाफ मेरे लिए काम नहीं किया, हालांकि मैनुअल अल्वेस जवाब (System.Net.WebUility) ने किया।
Matt.chatterley

80

यह .net Core SDK के संस्करण 2.0.0 में उपलब्ध है , System.Net.WebUtility.UrlEncode( प्रलेखन देखें )


2
इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। धन्यवाद।
टॉड बर्डसाल

11
नेट कोर 2+ के लिए, जब मैं उपयोग करता हूं System.Net.WebUtility.UrlEncode: रिक्त स्थान एन्कोडेड हैं a +। मैं Uri.EscapeDataStringसाथ एनकोड करता था %20
ttugates

43

ASP.Net कोर 2.0+ के लिए और यदि आपको रिक्त स्थान की आवश्यकता है तो इसे एन्कोड किया जा सकता है %20

के विपरीत +;

उपयोग:

 Uri.EscapeDataString(someString);

2

अपना समय बर्बाद मत करो, मुझे इन तथाकथित यूआरएल एनकोडर के साथ बहुत अनुभव मिला है, वे सभी बेकार हैं, और अलग-अलग quirks हैं। उदाहरण के लिए WebUtility.UrlEncode "+" चिह्न का ध्यान नहीं रखता है।

यदि आप URL मापदंडों को एनकोड करना चाहते हैं, तो BASE58 एन्कोडिंग को नियोजित करें। यह केवल वर्णमाला अक्षरों + संख्याओं का उपयोग करता है, इस प्रकार आपको एनकोड करने की आवश्यकता नहीं है।


क्या आप इन सभी प्रश्नों के बारे में बता सकते हैं, मैं केवल + से परिचित हूं कि QueryHelpers.AddQueryString या Uri.EscapeDataString ऐसा नहीं करता है।
माइकल

मैंने अभी-अभी कोशिश की है WebUtility.UrlEncodeऔर इसने आश्चर्यजनक रूप से प्लस चिह्न ("+") को "% 2B" में बदल दिया है। मैं .NET कोर 3.1 का उपयोग कर रहा हूं।
देजन

0

मैं एक रीडायरेक्ट का उपयोग कर रहा हूं , और UrlEncode ने मेरे लिए काम नहीं किया क्योंकि यह संपूर्ण url को एन्कोड करता है। मैंने इसके बजाय UriHelper.Encode का उपयोग करके इसे हल किया, जो नीचे दिखाया गया है।

UriHelper.Encode

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.