web-dev-qa-db-ja.com

URI相対パスから%20を削除する

あるディレクトリから別のディレクトリへの相対パスを生成しています。 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();
}
23
Stealth Rabbi
38
darth happyface
2
Tomas Voracek
string sRelativeFilePath = Uri.UnescapeDataString(new Uri(sAbsolutePath + "\\", false).MakeRelative(new Uri(filename)));
2
Nisha

Server.UrlDecodeを見てみてください: http://msdn.Microsoft.com/en-us/library/6196h3wt.aspx

エンコードされるのはスペース文字だけではありません。

1
Jason Kealey