62 votes

UrlEncode via une application console?

Normalement, je voudrais juste utiliser:

 HttpContext.Current.Server.UrlEncode("url");
 

Mais puisqu'il s'agit d'une application console, HttpContext.Current sera toujours null .

Y at-il une autre méthode qui fait la même chose que je pourrais utiliser?

80voto

Ostati Points 654

Essaye ça!

 Uri.EscapeUriString(url);
 

Pas besoin de faire référence à System.Web.

71voto

Andrew Taylor Points 1437

Je ne suis pas un gars .NET, mais ne pouvez-vous pas utiliser:

 HttpUtility.UrlEncode Method (String)
 

Ce qui est décrit ici:

Méthode HttpUtility.UrlEncode (String) sur MSDN

13voto

t3rse Points 5983

Le code de Ian Hopkins me convient sans avoir à ajouter une référence à System.Web. Voici un portage en C # pour ceux qui n'utilisent pas VB.NET:

 /// <summary>
/// URL encoding class.  Note: use at your own risk.
/// Written by: Ian Hopkins (http://www.lucidhelix.com)
/// Date: 2008-Dec-23
/// (Ported to C# by t3rse (http://www.t3rse.com))
/// </summary>
public class UrlHelper
{
    public static string Encode(string str) {
        var charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"));
        return Regex.Replace(str, 
            String.Format("[^{0}]", charClass),
            new MatchEvaluator(EncodeEvaluator));
    }

    public static string EncodeEvaluator(Match match)
    {
        return (match.Value == " ")?"+" : String.Format("%{0:X2}", Convert.ToInt32(match.Value[0]));
    }

    public static string DecodeEvaluator(Match match) {
        return Convert.ToChar(int.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber)).ToString();
    }

    public static string Decode(string str) 
    {
        return Regex.Replace(str.Replace('+', ' '), "%[0-9a-zA-Z][0-9a-zA-Z]", new MatchEvaluator(DecodeEvaluator));
    }
}
 

6voto

Kibbee Points 36474

Vous aurez envie d'utiliser

 System.Web.HttpUtility.urlencode("url")
 

Assurez-vous que system.web est l’une des références de votre projet. Je ne pense pas qu'il soit inclus comme référence par défaut dans les applications en console.

4voto

Patrik Points 5315

Essayez d'utiliser la méthode UrlEncode dans la classe HttpUtility.

  1. http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

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