在WinApp中,我只是想从Uri对象获取绝对路径:
Uri myUri = new Uri(myPath); //myPath is a string
//somewhere else in the code
string path = myUri.AbsolutePath;
如果原始路径中没有空格,则此工作正常。如果空格在那里,那么字符串会被破坏;例如,“文档和设置”变为“文档%20和%20设置”等。
任何帮助将不胜感激!
修改 LocalPath而不是AbsolutePath就行了!
答案 0 :(得分:12)
这是应该的方式。这就是所谓的URL编码。它适用,因为URL中不允许使用空格。
如果你想要包含空格的路径,你必须调用类似的东西:
string path = Server.URLDecode(myUri.AbsolutePath);
不应要求您导入任何内容以在Web应用程序中使用它。如果出现错误,请尝试导入System.Web.HttpServerUtility。或者,您可以这样称呼它:
string path = HttpContext.Current.Server.URLDecode(myUri.AbsolutePath);
答案 1 :(得分:10)
它正在对它进行编码,你可能会对它进行UrlDecode以使其返回空格,但它并没有被“修复”它只是正确编码。
我不确定你在写什么,但是要在asp.net中将它转换回Server.UrlDecode(path)。如果它是Windows应用程序,您也可以使用LocalPath而不是AbsolutePath。
答案 2 :(得分:5)
只需使用uri.LocalPath
答案 3 :(得分:2)
Uri还有一些静态方法 - EscapeDataString和EscapeUriString。
Uri.EscapeDataString(uri.AbsolutePath)
也有效
答案 4 :(得分:0)
使用HttpUtility:
HttpUtility.UrlDecode(uri.AbsolutePath)