2011-06-29 2 views
7

Possible en double:
How can I decode HTML characters in C#?Unescape une url échappé à C#

Je urls qui se sont échappés sous cette forme:

http://www.someurl.com/profile.php?mode=register&agreed=true 

Je veux le convertir en forme non évanouie

http://www.someurl.com/profile.php?mode=register&agreed=true 

est-ce la même chose que le HTML?

Comment est-ce que je fais ceci?

grâce

+1

Le codage d'URL est complètement différent du codage HTML, car il s'agit d'un doublon marqué. Marqué pour rouvrir. – Deestan

Répondre

9

& est une entité HTML et est utilisé lorsque le texte est codé en HTML parce que vous devez « échapper » la & qui a une signification particulière en HTML. Apparemment, ce mécanisme d'échappement a été utilisé sur l'URL sans doute parce qu'il est utilisé dans un code HTML, par exemple dans un lien. Je ne sais pas pourquoi vous voulez le décoder parce que le navigateur fera le décodage approprié quand le lien est cliqué. Mais de toute façon, de revenir, il vous pouvez utiliser HttpUtility.HtmlDecode dans l'espace System.Web:

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true"; 
var decoded = HttpUtility.HtmlDecode(encoded); 

La valeur de decoded est:

http://www.someurl.com/profile.php?mode=register&agreed=true 

Une autre forme de codage/décodage utilisé est le codage URL. Ceci est utilisé pour pouvoir inclure des caractères spéciaux dans certaines parties de l'URL. Par exemple, les caractères /, ? et & ont une signification spéciale dans une URL. Si vous devez inclure l'un de ces caractères dans un paramètre de requête, vous devrez encoder le paramètre URL pour ne pas endommager l'URL. Voici un exemple d'une URL où se échappe URL a été utilisé:

http://www.someurl.com/profile.php?company=Barnes+%26+Noble 

Le nom de l'entreprise Barnes & Noble a été codé comme Barnes+%26+Noble. Si le & n'avait pas été échappé, l'URL aurait contenu non pas un mais deux paramètres de requête car & est utilisé comme délimiteur entre les paramètres de requête.

+0

c'est une application winforms. cela fonctionnera-t-il dans .net 2.0? Je reçois une erreur 'HttpUtility 'n'est pas déclaré' – Smith

+0

@Smith: Voici la documentation pour la classe .NET 2.0 'HttpUtility': http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS .80) .aspx. Avez-vous pensé à ajouter une référence à 'System.Web.dll'? –