मैं C # का उपयोग करके URL पैरामीटर को कैसे डीकोड करूं?


146

मैं C # का उपयोग करके एन्कोडेड URL पैरामीटर को कैसे डीकोड कर सकता हूं?

उदाहरण के लिए, यह URL लें:

my.aspx?val=%2Fxyz2F

जवाबों:



288
string decodedUrl = Uri.UnescapeDataString(url)

या

string decodedUrl = HttpUtility.UrlDecode(url)

Url एक कॉल के साथ पूरी तरह से डिकोड नहीं किया गया है। पूरी तरह से डीकोड करने के लिए आप इस तरीके को लूप में कह सकते हैं:

private static string DecodeUrlString(string url) {
    string newUrl;
    while ((newUrl = Uri.UnescapeDataString(url)) != url)
        url = newUrl;
    return newUrl;
}

13
Uri.UnescapeDataString (url) thanx
themhz

@ogi इसके लिए धन्यवाद! मुझे नहीं पता था कि यह सिर्फ एक कॉल के साथ पूरी तरह से काम नहीं करता था! मैं Uri.UnescapeDataStringदो बार भागा और मुझे जो चाहिए था मिल गया !! : D
C0NFUS3D

2
इम्प्लाट किए गए उत्तर से बेहतर IMHO क्योंकि आपका पहला सुझाव पोर्टेबल क्लास लिबरीज़ (PCLs) में भी काम करता है
डैनियल वेहेलमैन

2
सबसे बढ़िया उत्तर! लेकिन विचार करें कि पूरी तरह से डिकोड करने से पहले आपके पैरामेट्स कैसे निहित हैं। उदाहरण के लिए एक परम मान एक एन्कोडेड URL हो सकता है, जिसमें स्वयं एक अन्य एन्कोडेड URL के साथ एक परम है, यदि आप इसे एक बार में पूरी तरह से डिकोड करते हैं, तो आप यह नहीं बता पाएंगे कि अब क्या था। यह एक बीजगणित कथन के बाहर सभी परों को लताड़ने जैसा होगा। a = ((b + c) * d) यदि आप इसे पूरी तरह से अनसेप्ट करते हैं, तो घटकों का अर्थ खो सकता है a = b + c * d
DanO

2
UnescapeDataString पर्याप्त नहीं है क्योंकि यह कई मामलों को हैंडल नहीं करेगा (उदाहरण के लिए URL में पैरामीटर जिसमें '+' का उपयोग होता है, लेकिन UnescapeDataString जानबूझकर उन स्थानों को परिवर्तित नहीं करता है)। Uri केवल URL से अधिक संभालता है, क्योंकि सवाल URL के बारे में पूछ रहा है जिसे हमें HttpUtility.UrlDecode
Lorenz03Tx


23

इसे इस्तेमाल करे:

string decodedUrl = HttpUtility.UrlDecode("my.aspx?val=%2Fxyz2F");

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.