ENCODING A STRING USING HTML ENTITIES

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 14 juin 2007 à 18:11
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 15 juin 2007 à 10:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43118-encoding-a-string-using-html-entities

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
15 juin 2007 à 10:01
Salut,

pour lui limite tu t'en fou il reste portable, mais si tu veux unifier faut faire : '\u005C\u0027', il faut l'echaper avec \ mais au format unicode ^^
futer Messages postés 1 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 15 juin 2007
15 juin 2007 à 09:23
Merci pour cette proposition. J'ai utilisé l'utilitaire charmap de Windows
Par contre, le caractère quote ne peut être remplacé par son littéral unicode car le compilateur ne s'y retrouve plus !!!

import java.util.*;
public class HTMLEncoder {
private static Map mapChar2HTMLEntity;
private final static char [] characters = {
'\u00DC', '\u00C4', '\u00D6', '\u00CB', '\u00C7', '\u00C6', '\u00C5', '\u00D8',
'\u00FC', '\u00E4', '\u00F6', '\u00EB', '\u00E7', '\u00E5', '\u00F8', '\u0060', '\u00E0', '\u00E8', '\u00EC', '\u00F2', '\u00F9',
'\u0026', '\u00DF','\u00A0', '\u003E', '\u003C',
'\u009A', '\u00A2', '\u00A3', '\u00AB','\u00BB','\u00AE','\u00AD','\'',
'\u00E1','\u00FA','\u00F3','\u00E9','\u00ED','\u00F1','\u00A7','\u00E8','\u00EE','\u00F4','\u00E2','\u00FB','\u00EA',
'\u00E6','\u00A1','\u0022','\u00AA','\u00D7','\u00B0','\u20AC','\u007C','\u00B5','\u00BA','\u00F7','\u00B2','\u00B3',
'\u00B1'
};
private final static String[] entities = {
"Ü","Ä","Ö","Ë","Ç","Æ","Å","Ø",
"ü","ä","ö","ë","ç","å","ø","`","à","è","ì","ò","ù",
"&","ß"," ",">","<",
"©","¢","£","«","»","®","·","´",
"á","ú","ó","é","í","ñ","§","è","î","ô","â","û","ê",
"æ","¡",""","ª","×","°","€","¦","µ","º","÷","²","³",
"±"
};
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();
}
}
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 juin 2007 à 18:11
Salut,

tu devrais changer les char de ton tableau 'characters' avec les valeurs unicode sinon si tu passes le source d'un windows vers un linux et réciproquement ton tableau sera vite pourrir à cause de la différence d'encodage... et sera inutilisable.

tu trouveras sur le lien ci-dessous, un applet contenant les codes unicode que tu utilises :
http://mindprod.com/applets/unicode.html
Rejoignez-nous