2009-09-22 10 views
10

Lorsque je lance mon projet, j'obtiens l'URL http://localhost:5973/PageToPageValuePass/Default.aspx Je veux encoder l'URL car parfois j'ai besoin de transférer des données de page en page. Lorsque les URL sont codés, cela augmente la fiabilité.Comment encoder une URL?

Server.UrlEncode("http://www.google.com/c#"); 

Je comprends cela, mais comment l'utiliser pour m'aider à encoder l'URL?

+18

27 questions et 0% accepter? Comme tu peux être cruel. – Matt

+0

Pouvez-vous clarifier votre question? Demandez-vous comment fonctionne le codage d'URL? Ou pour une bibliothèque qui va le gérer pour vous? Ou avez-vous un cas d'utilisation spécifique où cela ne fonctionne pas? – atk

+4

@envalid: Je ne pense pas que l'adjectif "cruel" soit approprié ici. Une meilleure description serait "désagréable, inconsidérée et incivile"! ;-) – Cerebrus

Répondre

3

Le codage Url est utilisé pour s'assurer que les symboles spéciaux inclus dans une URL (très probablement dans une chaîne de requête) ne sont pas interprétés par erreur comme ceux utilisés dans l'analyse et le traitement d'un URL. Par exemple, le symbole + est utilisé pour indiquer un espace dans une URL. Cependant, si vous aviez l'intention d'insérer un symbole + dans votre chaîne de requête, vous voudriez encoder cette chaîne de requête avant de l'envoyer à un navigateur.

Par exemple. Imaginez que vous avez écrit une page qui reçoit une équation mathématique sur la chaîne de requête et affiche cette équation sur la page.

L'URL pourrait être: http://yoursite.com/displayMath.aspx?equation=3+5

Le symbole + dans ce cas est destiné à être une partie significative de l'équation. Cependant, sans UrlEncode, il serait interprété comme représentant un espace. La lecture de cette valeur à partir de la chaîne de requête sur la page de réception donnerait "3 5", ce qui n'est pas ce qui était prévu. Au lieu de rediriger directement vers cette URL, vous souhaiterez d'abord encoder l'URL dans la requête. Vous pouvez écrire le code suivant:

string equation = "3+5";
string url = String.Format(@"http://yoursite.com/displayMath.aspx?equation={0}", equation);
string encodedUrl = Server.UrlEncode(url);
Response.Redirect(encodedUrl);

Cela garantirait qu'une Request.Querystring["equation"] ultérieure recevrait l'équation intacte car tous les symboles spéciaux seraient d'abord codés. Je ne suis pas sûr de comprendre votre cas d'utilisation pour les URLs d'encodage. Si vous pouviez peut-être fournir plus d'informations sur ce que vous essayez d'accomplir, je tenterai d'y répondre plus complètement. Pour l'instant j'espère que cette information est utile.

35

Si vos pièces d'encodage du chemin:

System.Uri.EscapeUriString("c#") 

Si votre « arguments » encoding:

String.Format("http://something/?test={0}", System.Uri.EscapeDataString("c#")); 
+3

+1 pour l'utilisation de EscapeUriString(). – Cerebrus

+0

'.UrlEncode (...)' aspire pour 'mailto'' href' avec sujet ou corps. +1 – it3xl

0

que vous voulez créer un lien avec certains paramètres que vous pouvez l'utiliser comme suit:

ASPX:

Cliquez ici

code derrière:

myLink.Href = Page.ResolveClientUrl("~/MyPage.aspx") + "?id=" + 
    Server.UrlEncode("put here what ever you want to url encode"); 

Ou, comme dans votre question:

myLink.Href = "http://www.google.com/")+Server.UrlEncode("C#"); 

cela mis en html:

<a id="myLink" runat="server" target="_self" href="http://www.google.com/c+c%23"> 
6

essayer cette

  • en ASP.NET
 
Server.UrlEncode("http://www.google.com/c#");
  • à l'aide WinForms System.Web.dll

     
    HttpUtility.UrlEncode("http://www.google.com/c#");
Questions connexes