2010-03-10 5 views
1

Je ne connais pas encore le codage HTML et je sais que le HTML a des caractères réservés pour son utilisation et il affiche également certains caractères par leur code de caractère. Par exemple -:Remplacement des caractères spéciaux de la source HTML

Πis Π
© is © 
® is ® 

J'ai la source HTML dans std :: string. comment puis-je les déchiffrer dans leur forme actuelle et les remplacer par std :: string? Y at-il une bibliothèque avec la source disponible ou peut-il être fait en utilisant des préprocesseurs de macros?

+0

Ils sont appelés "entités HTML" –

Répondre

2

Je vous recommande d'utiliser un analyseur HTML/XML qui peut effectuer automatiquement la conversion pour vous. Parsing HTML correctement à la main est extrêmement difficile. Si vous insistez pour le faire vous-même, la bibliothèque Boost String Algorithms fournit des fonctions de remplacement utiles.

0

Une méthode pour les entités numériques serait d'utiliser une expression régulière comme &#([0-9]+);, saisir la valeur numérique et le convertir au caractère ASCII (probablement avec sprintf en C++).

Pour les entités nommées, vous devez créer un mappage. Vous pouvez probablement faire un simple remplacement de chaîne pour convertir les numéros, puis utilisez la méthode ci-dessus. W3C a une table ici: http://www.w3.org/TR/WD-html40-970708/sgml/entities.html

Mais si vous essayez de lire ou d'analyser un tas de HTML dans une chaîne, vous devez utiliser un analyseur HTML. Rechercher les nombreuses questions sur SO.

1
Πis Π

Non, ce n'est pas. Œ est 'LIGNE PARTIELLE ARRIÈRE'. Les entités numériques correctes pour Œ sont Œ et Œ.

+0

Je l'ai pris à partir d'ici http://www.web-source.net/symbols.htm – cpx

+0

Blâmer Microsoft pour faire Windows-1252. – kennytm

Questions connexes