14

在 WinApp 中,我只是想从 Uri 对象中获取绝对路径:

Uri myUri = new Uri(myPath); //myPath is a string
//somewhere else in the code
string path = myUri.AbsolutePath;

如果我的原始路径中没有空格,这可以正常工作。如果那里有空格,则字符串会被破坏;例如“文档和设置”变为“文档%20and%20Setting”等。

任何帮助,将不胜感激!

编辑: LocalPath 而不是 AbsolutePath 成功了!

4

5 回答 5

12

这是它应该的方式。这称为 URL 编码。它适用,因为 URL 中不允许有空格。

如果您希望返回包含空格的路径,则必须调用如下内容:

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

您不应该被要求导入任何东西来在 Web 应用程序中使用它。如果出现错误,请尝试导入 System.Web.HttpServerUtility。或者,您可以这样称呼它:

string path = HttpContext.Current.Server.URLDecode(myUri.AbsolutePath);
于 2009-01-12T18:52:30.783 回答
11

它正在按应有的方式对其进行编码,您可能可以对其进行 UrlDecode 以将其带回空格,但它并没有“损坏”,它只是正确编码。

我不确定您在写什么,但是要将其转换回 asp.net,它是 Server.UrlDecode(path)。如果它是 Windows 应用程序,您也可以使用 LocalPath,而不是 AbsolutePath。

于 2009-01-12T18:50:50.180 回答
6

只需使用 uri.LocalPath 代替

于 2013-07-24T16:17:59.900 回答
3

Uri 还有几个静态方法 - EscapeDataString和 EscapeUriString。

Uri.EscapeDataString(uri.AbsolutePath)也有效

于 2010-11-08T06:57:37.810 回答
0

使用 HttpUtility:

 HttpUtility.UrlDecode(uri.AbsolutePath)
于 2015-10-15T13:53:50.667 回答