2010-11-04 13 views
1

J'essaie d'écrire une méthode en C# qui prend une chaîne avec des caractères codés en HTML et la renvoie comme des caractères utf-8. Au début, je pensais que c'était déjà possible avec la méthode HttpEncoder.HtmlDecode, mais cela retourne void et prend TextWriter pour la sortie comme deuxième paramètre. Je n'ai pas vraiment la classe TextWriter. Comment puis-je envelopper ceci pour qu'il prenne et renvoie des chaînes? Ou y a-t-il une façon de battre?Retourne une chaîne utf-8 avec HttpEncoder.HtmlDecode?

par exemple.

myHTMLDecode("Tania Pérez-Salas Compañia de Danza") 

reviendriez la chaîne utf-8 - Tania P & EACUTE; rez-Salas Compa & ntilde; ia de Danza

modifier - L'autre problème que j'ai est que HttpEncoder.HtmlDecode est une méthode protégée. Y a-t-il de toute façon autour de ça?

Répondre

1

Il y a aussi HttpUtility.HtmlDecode qui prend une chaîne et retruns une chaîne. HttpEncoder.HtmlDecode semble être interne en fonction de la page que j'ai liée, ce que j'aurais pensé qu'il serait difficile à utiliser ...

+0

parfait - merci. –

3

Utilisez un StringWriter

public static String DecodeHtmlEntities(String s) { 
    StringWriter writer = new StringWriter(); 
    HttpEncoder.HtmlDecode(s, writer); 
    return writer.ToString(); 
} 
+0

Cela ressemble à cela fonctionnerait, mais je me rends compte maintenant que la méthode est marquée "protégé interne virtuel "donc je reçois:" Erreur \t 'System.Web.Util.HttpEncoder.HtmlDecode' est inaccessible en raison de son niveau de protection " –