Je veux transformer une chaîne en URL en utilisant C #. Il doit y avoir quelque chose dans le framework .NET qui devrait aider, non?
Je crois que vous recherchez HttpServerUtility.UrlEncode .
System.Web.HttpUtility.UrlEncode(string url)
Une autre façon de procéder consiste à utiliser Uri.EscapeUriString(stringToEscape)
.
J'ai trouvé utile System.Web.HttpUtility.UrlPathEncode(string str);
Il remplace les espaces par% 20 et non par +.
Pour échapper correctement les espaces ainsi que le reste des caractères spéciaux, utilisez System.Uri.EscapeDataString(string stringToEscape)
.
Comme commenté sur l'histoire approuvée, la méthode HttpServerUtility.UrlEncode remplace les espaces par + au lieu de% 20. Utilisez plutôt l'une de ces deux méthodes: ri.EscapeUriString () ou ri.EscapeDataString ()
Exemple de code:
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"
Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//"https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//"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");
//"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");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
Utilisation HttpServerUtility.UrlEncode
J'avais besoin de faire cela aussi, j'ai trouvé cette question il y a des années mais le titre et le texte de la question ne correspondent pas tout à fait, et en utilisant Uri.EscapeDataString
ou UrlEncode
(ne l'utilisez pas s'il vous plaît!) n'a généralement de sens que si nous parlons de passer des URL en tant que paramètres à d'autres URL.
(Par exemple, passer une URL de rappel lors de l'authentification par ID ouvert, Azure AD, etc.)
En espérant que ce soit une réponse plus pragmatique à la question: Je veux transformer une chaîne en URL en utilisant C #, il doit y avoir quelque chose dans le framework .NET qui devrait aider, non?
Oui - deux fonctions sont utiles pour créer des chaînes URL en C #
String.Format
pour formater l'URLUri.EscapeDataString
pour échapper tous les paramètres de l'URLCe code
String.Format("https://site/app/?q={0}&redirectUrl={1}",
Uri.EscapeDataString("search for cats"),
Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))
produit ce résultat
https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp
Qui peut être copié et collé en toute sécurité dans la barre d'adresse d'un navigateur, ou l'attribut src
d'une balise HTML A
, ou utilisé avec curl
, ou encodé dans un code QR, etc.