从 URI 相对路径中删除 %20

发布于 2024-11-02 03:24:07 字数 500 浏览 3 评论 0原文

我正在生成从一个目录到另一个目录的相对路径。如果 OutputDirectoryName 属性是包含空格的目录,则使用 %20 而不是空格对空格进行编码。我正在创建 Windows 文件夹的相对路径,因此我必须使用空格来设置相对路径。有没有一种干净的方法来指定 URI 的编码方式?我知道我可以对relativePath.ToString() 进行搅拌替换,但我想知道是否有更好的实现。 谢谢。

public string GetOutputDirectoryAsRelativePath(string baseDirectory)
{
    Uri baseUri = new Uri(baseDirectory);
    Uri destinationUri = new Uri(OutputDirectoryName);
    Uri relativePath = baseUri.MakeRelativeUri(destinationUri);
    return relativePath.ToString();
}

I am generating a relative path from 1 directory to another. If the OutputDirectoryName property is a directory containing spaces, the spaces are encoded using %20, rather than a space. I am creating a relative path to a windows folder, so I must have my relatiave path using spaces. Is there a clean way to specify how the URI is encoded? I know I could do a stirng replace on the relativePath.ToString(), but am wondering if there's a better implementation.
Thanks.

public string GetOutputDirectoryAsRelativePath(string baseDirectory)
{
    Uri baseUri = new Uri(baseDirectory);
    Uri destinationUri = new Uri(OutputDirectoryName);
    Uri relativePath = baseUri.MakeRelativeUri(destinationUri);
    return relativePath.ToString();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柠檬 2024-11-09 03:24:07
string sRelativeFilePath = Uri.UnescapeDataString(new Uri(sAbsolutePath + "\\", false).MakeRelative(new Uri(filename)));
string sRelativeFilePath = Uri.UnescapeDataString(new Uri(sAbsolutePath + "\\", false).MakeRelative(new Uri(filename)));
爱给你人给你 2024-11-09 03:24:07

尝试查看 Server.UrlDecode:
http://msdn.microsoft.com/en-us/library/6196h3wt.aspx

空格字符并不是唯一被编码的字符。

Try looking at Server.UrlDecode:
http://msdn.microsoft.com/en-us/library/6196h3wt.aspx

The space character is not the only one that is encoded.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文