Encoding a string using html entities

Contenu du snippet

Si vous saisissez du texte dans un formulaire HTML et que ce texte contient des caractères spéciaux, ceux-ci doivent être convertis en entités HTML (par exemple le caractère 'é' est converti en "é") si vous souhaitez sauvegarder ce texte dans une BD et le réafficher ensuite dans une page Web.
La classe HTMLEncoder est un Bean, utilisable dans une JSP avec la balise :
<jsp:useBean id="convertisseur" class="Beans.HTMLEncoder" scope="session"/>
La conversion se fait en utilisant une collection de type Map qui établit la correspondance entre les caractères spéciaux et les entités HTML.

Source / Exemple :


import java.util.*;
public class HTMLEncoder {
   private static Map mapChar2HTMLEntity;   
   private final static char [] characters = {
      'Ü', 'Ä', 'Ö', 'Ë', 'Ç', 'Æ', 'Å', 'Ø', 
      'ü', 'ä', 'ö', 'ë', 'ç', 'å', 'ø', '`', 'à', 'è', 'ì', 'ò', 'ù',
      '&', 'ß', ' ', '>', '<', 
      '©', '¢', '£', '«', '»', '®', '-', '\'',
      'á','ú','ó','é','í','ñ','§','è','î','ô','â','û','ê',
      'æ','¡','\"','ª','×','°','?','¦'
   }; 
   private final static String[] entities = {
       "Ü","Ä","Ö","Ë","Ç","Æ","Å","Ø",     "ü","ä","ö","ë","ç","å","ø","&grave;","à","è","ì","ò","ù",
       "&amp;","ß","&nbsp;",">","<",
       "©","¢","£","«","»","®","·","´",     "á","ú","ó","é","í","ñ","§","è","î","ô","â","û","ê",
       "æ","¡","&quot;","ª","×","°","€","¦"
  };  
  public HTMLEncoder() {
     mapChar2HTMLEntity= new HashMap();
     int longueur = characters.length;
     for (int i = 0; i < longueur; i++) mapChar2HTMLEntity.put(new Character(characters[i]), entities[i]);
  }	  
   public String encode(String s) {
     int longueur = s.length();
     final StringBuffer sb = new StringBuffer(longueur * 2);
     char ch;
     for (int i =0; i < longueur ; ++i) {
       ch = s.charAt(i);
       if ((ch >= 63 && ch <= 90) || (ch >= 97 && ch <= 122)) sb.append(ch);
       else {
	 String ss = (String)mapChar2HTMLEntity.get(new Character(ch));
	 if(ss==null) sb.append(ch); else sb.append(ss);
       }
     }
     return sb.toString();
   }
 }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.