Uri.Cheminabsolu bousille chemin avec des espaces
Dans un WinApp je suis simplement essayer d'obtenir le chemin absolu à partir d'un Uri de l'objet:
Uri myUri = new Uri(myPath); //myPath is a string
//somewhere else in the code
string path = myUri.AbsolutePath;
Cela fonctionne bien si pas d'espace dans mon chemin d'origine. Si les espaces sont là, la chaîne est mutilé; par exemple "Documents and settings "devient" Documents%20and%20Setting", etc.
Toute aide serait appréciée!
EDIT:
Chemin local au lieu de Cheminabsolu a fait le tour!
- note à tous: c'est l'un des rares affichage de l'encodage de l'ignorance
Vous devez vous connecter pour publier un commentaire.
C'est l'encodage comme il se doit, vous pourriez probablement UrlDecode pour obtenir à nouveau avec des espaces, mais ce n'est pas "déformé" c'est juste codé correctement.
Je ne suis pas sûr de ce que vous écrivez, mais pour la convertir en asp.net il est Serveur.UrlDecode(chemin d'accès). Vous pourriez également être en mesure d'utiliser un chemin local, plutôt que de Cheminabsolu, si c'est une application Windows.
C'est la façon dont il est censé être. Cela s'appelle le codage d'URL. Il s'applique parce que les espaces ne sont pas autorisés dans les Url.
Si vous voulez le chemin du retour avec des espaces incluses, vous devez appeler quelque chose comme:
Vous ne devriez pas avoir à importer quoi que ce soit pour l'utiliser dans une application web. Si vous obtenez une erreur, essayer de l'importer Système.Web.HttpServerUtility. Ou, vous pouvez l'appeler comme ça:
Juste utiliser l'uri.Chemin local au lieu
Uri a aussi un couple de méthodes statiques - EscapeDataString et EscapeUriString.
Uri.EscapeDataString(uri.AbsolutePath)
travaille aussiUtilisation HttpUtility: