82 votes

Comment remplacer tous les espaces par %20 en C# ?

Je veux transformer une chaîne de caractères en une URL en utilisant C#. Il doit y avoir quelque chose dans le cadre .NET qui devrait m'aider, non ?

126voto

0xA3 Points 73439

Une autre façon de procéder est d'utiliser Uri.EscapeUriString(stringToEscape) .

57voto

LiraNuna Points 21565

Je crois que vous cherchez HttpServerUtility.UrlEncode .

System.Web.HttpUtility.UrlEncode(string url)

49voto

Gilda Points 171

J'ai trouvé utile System.Web.HttpUtility.UrlPathEncode(string str);

Il remplace les espaces par %20 et non par +.

26voto

palswim Points 4353

Pour échapper correctement aux espaces ainsi qu'au reste des caractères spéciaux, utilisez System.Uri.EscapeDataString(string stringToEscape) .

19voto

Darrelk Points 430

Comme commenté dans l'article approuvé, le HttpServerUtility.UrlEncode remplace les espaces par + au lieu de %20. Utilisez plutôt l'une de ces deux méthodes : Uri.EscapeUriString() ou Uri.EscapeDataString()

Exemple de code :

HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//Output: "https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"

Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//Output: "https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//Output: "https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg"

//When your url has a query string:
Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//Output: "https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");    
//Output: "https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X