あるディレクトリから別のディレクトリへの相対パスを生成しています。 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();
}
使用できます
Uri.UnescapeDataString
http://msdn.Microsoft.com/en-us/library/system.uri.unescapedatastring.aspx
string sRelativeFilePath = Uri.UnescapeDataString(new Uri(sAbsolutePath + "\\", false).MakeRelative(new Uri(filename)));
Server.UrlDecodeを見てみてください: http://msdn.Microsoft.com/en-us/library/6196h3wt.aspx
エンコードされるのはスペース文字だけではありません。