2009-01-12 13 views
9

एक WinApp में मैं बस एक उरी वस्तु से निरपेक्ष पथ प्राप्त करने के लिए कोशिश कर रहा हूँ के साथ पथ को खराब करता। यदि रिक्त स्थान हैं तो स्ट्रिंग उलझ जाती है; उदाहरण के लिए 'दस्तावेज़ और सेटिंग्स' दस्तावेज़ बन जाते हैं 'दस्तावेज़% 20 और% 20 सेटिंग' आदिUri.AbsolutePath रिक्त स्थान

किसी भी मदद की सराहना की जाएगी!

संपादित करें: AbsolutePath के बजाय लोकलपाथ चाल है!

+0

टिप्पणी सब करने के लिए: इस अज्ञान एन्कोडिंग आपके उत्तर के लिए धन्यवाद – JohnIdol

उत्तर

9

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

मुझे यकीन नहीं है कि आप क्या लिख ​​रहे हैं, लेकिन इसे वापस asp.net में परिवर्तित करने के लिए यह सर्वर है। UrlDecode (पथ)। यदि आप एक विंडोज ऐप है, तो आप AbsolutePath की बजाय स्थानीयपाथ का उपयोग करने में भी सक्षम हो सकते हैं।

+0

की एक दुर्लभ प्रदर्शन है - कैसे करना है मैं ऐसा करता हूँ? – JohnIdol

+0

मुझे यकीन नहीं है कि आप क्या लिख ​​रहे हैं, लेकिन asp.net में यह server.UrlDecode (पथ) है; –

+1

यदि आप एक विंडोज ऐप है, तो आप AbsolutePath की बजाय स्थानीयपाथ का उपयोग करने में भी सक्षम हो सकते हैं। –

12

यह वही तरीका है जैसा यह माना जाता है। इसे यूआरएल एन्कोडिंग कहा जाता है। यह लागू होता है क्योंकि यूआरएल में रिक्त स्थान की अनुमति नहीं है।

string path = Server.URLDecode(myUri.AbsolutePath); 

आप एक वेब अनुप्रयोग में इसके उपयोग के लिए कुछ भी आयात करने की आवश्यकता नहीं किया जाना चाहिए:

आप पथ वापस रिक्तियों के साथ शामिल करना चाहते हैं, तो आप की तरह कुछ कॉल करना होगा। अगर आपको कोई त्रुटि मिलती है, तो System.Web.HttpServerUtility आयात करने का प्रयास करें। या, आप यह बहुत की तरह कॉल कर सकते हैं:

string path = HttpContext.Current.Server.URLDecode(myUri.AbsolutePath); 
+0

अच्छा लगता है - WinApp में ऐसा करने के लिए मुझे किस संदर्भ में जोड़ना चाहिए? – JohnIdol

+0

मीठा - तो मुझे लगता है कि WinApps के समान कुछ भी विशिष्ट नहीं है? – JohnIdol

+0

उत्तर के लिए धन्यवाद - इस मामले में सबसे अच्छा समाधान AbsolutePath के बजाय लोकलपैथ का उपयोग करना है क्योंकि यह एक Winapp है और मैं सर्वर या HttpContext का उपयोग नहीं करना पसंद करता हूं। – JohnIdol

1

उरी भी स्थिर तरीकों की एक जोड़ी है - EscapeDataString और EscapeUriString।

Uri.EscapeDataString(uri.AbsolutePath) भी काम करता है

+1

आप शायद उरी.इनस्केपडेटास्ट्रिंग का मतलब है – Fortega

0

उपयोग HttpUtility uri.LocalPath का उपयोग करें:

HttpUtility.UrlDecode(uri.AbsolutePath) 
संबंधित मुद्दे