2010-01-06 6 views
2

Dans ASP:Comment imiter ASP Server.URLEncode dans ASP.NET?

Server.URLEncode("+&(). -*<>/\|") 
' returns %2B%26%28%29%2E+%2D%2A%3C%3E%2F%5C%7C 

Dans ASP.NET

Uri.EscapeDataString("+&(). -*<>/\|") 
// returns %2B%26().%20-*%3C%3E%2F%5C%7C 

HttpUtility.UrlEncode("+&(). -*<>/\|") 
// returns %2b%26().+-*%3c%3e%2f%5c%7c 

est-il un moyen élégant comment mimer ancien comportement ASP dans ASP.NET?

Répondre

3

Vous pouvez utiliser une expression régulière pour faire correspondre les caractères que vous voulez convertir, et une expression lambda pour créer le code hexadécimal:

string input = @"+&(). -*<>/\|"; 
string encoded = Regex.Replace(
    HttpUtility.UrlEncode(input), 
    @"[()\.\-*]", 
    m => "%" + Convert.ToString((int)m.Captures[0].Value[0], 16) 
); 
+0

Je ne peux pas appeler Regexp élégant mais je suppose que c'est mieux que je peux obtenir alors j'accepte. Merci. –

0

Vous pouvez essayer d'utiliser Server.UrlEncode(), qui est pris en charge dans ASP.Net.

+1

Est-ce que produire un résultat différent de celui HttpUtility.UrlEncode? – AnthonyWJones

+1

@Anthony: Non, il appelle simplement HttpUtility.UrlEncode. – Guffa

Questions connexes