Encoder une chaine en html

Résolu/Fermé
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 22 août 2006 à 17:47
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 23 août 2006 à 11:53
    Bonjour,

savez vous si il existe une classe pour encoder une chaine quelquonque en html . Je cherche l'équivalent de la fonction html_encode(chaine) en php. Merci.

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
23 août 2006 à 10:53
Salut,

tu vois en étant plus explicite sur ta demande c'est tout de suite clair par ce que les "Je cherche l'équivalent de la fonction html_encode(chaine) en php" c'est bien c'est beau mais si tu ne fais pas de php cela veut rien dire !!!

Pour ce que tu demande il n'y a pas d'equivalence dans l'api standard java (cela dis peut etre dans l'api servlet... a voir) sinon voici un exemple pour encoder au format html (j'utilise l'unicode pour rester portable sur differents OS

public class HTTPUtils {
   
private static final HtmlUnicode [] HTML_UNICODE = {
                                                    new HtmlUnicode( "&", '&' ),
                                                    new HtmlUnicode( "&lt;",  '<' ),
                                                    new HtmlUnicode( "&gt;", '>' ),
                                                    new HtmlUnicode( "&quot;", '"' ),   
                                                    //MAJUSCULES
                                                    new HtmlUnicode( "&Agrave;", '\u00c0' ),
                                                    new HtmlUnicode( "&Aacute;", '\u00c1' ),
                                                    new HtmlUnicode( "&Acirc;", '\u00c2' ),
                                                    new HtmlUnicode( "&Atilde;", '\u00c3' ),
                                                    new HtmlUnicode( "&Auml;", '\u00c4' ),
                                                    new HtmlUnicode( "&Aring;", '\u00c5' ),
                                                    new HtmlUnicode( "&AElig;", '\u00c6' ),
                                                    new HtmlUnicode( "&Ccedil;", '\u00c7' ),
                                                    new HtmlUnicode( "&Egrave;", '\u00c8' ),
                                                    new HtmlUnicode( "&Eacute;", '\u00c9' ),
                                                    new HtmlUnicode( "&Ecirc;", '\u00ca' ),
                                                    new HtmlUnicode( "&Euml;", '\u00cb' ),
                                                    new HtmlUnicode( "&Igrave;", '\u00cc' ),
                                                    new HtmlUnicode( "&Iacute;", '\u00cd' ),
                                                    new HtmlUnicode( "&Icirc;", '\u00ce' ),
                                                    new HtmlUnicode( "&Iuml;", '\u00cf' ),
                                                    new HtmlUnicode( "&ETH;", '\u00d0' ),
                                                    new HtmlUnicode( "&Ntilde;", '\u00d1' ),
                                                    new HtmlUnicode( "&Ograve;", '\u00d2' ),
                                                    new HtmlUnicode( "&Oacute;", '\u00d3' ),
                                                    new HtmlUnicode( "&Ocirc;", '\u00d4' ),
                                                    new HtmlUnicode( "&Otilde;", '\u00d5' ),
                                                    new HtmlUnicode( "&Ouml;", '\u00d6' ),
                                                    new HtmlUnicode( "&Oslash;", '\u00d8' ),
                                                    new HtmlUnicode( "&Ugrave;", '\u00d9' ),
                                                    new HtmlUnicode( "&Uacute;", '\u00da' ),
                                                    new HtmlUnicode( "&Ucirc;", '\u00db' ),
                                                    new HtmlUnicode( "&Uuml;", '\u00dc' ),
                                                    new HtmlUnicode( "&Yacute;", '\u00dd' ),
                                                    new HtmlUnicode( "&THORN;", '\u00de' ),
                                                    new HtmlUnicode( "&szlig;", '\u00df' ),
                                                    //MNUSCULES
                                                    new HtmlUnicode( "&agrave;", '\u00e0' ),
                                                    new HtmlUnicode( "&aacute;", '\u00e1' ),
                                                    new HtmlUnicode( "&acirc;", '\u00e2' ),
                                                    new HtmlUnicode( "&atilde;", '\u00e3' ),
                                                    new HtmlUnicode( "&auml;", '\u00e4' ),
                                                    new HtmlUnicode( "&aring;", '\u00e5' ),
                                                    new HtmlUnicode( "&aelig;", '\u00e6' ),
                                                    new HtmlUnicode( "&ccedil;", '\u00e7' ),
                                                    new HtmlUnicode( "&egrave;", '\u00e8' ),
                                                    new HtmlUnicode( "&eacute;", '\u00e9' ),
                                                    new HtmlUnicode( "&ecirc;", '\u00ea' ),
                                                    new HtmlUnicode( "&euml;", '\u00eb' ),
                                                    new HtmlUnicode( "&igrave;", '\u00ec' ),
                                                    new HtmlUnicode( "&iacute;", '\u00ed' ),
                                                    new HtmlUnicode( "&icirc;", '\u00ee' ),
                                                    new HtmlUnicode( "&iuml;", '\u00ef' ),
                                                    new HtmlUnicode( "&eth;", '\u00f0' ),
                                                    new HtmlUnicode( "&ntilde;", '\u00f1' ),
                                                    new HtmlUnicode( "&ograve;", '\u00f2' ),
                                                    new HtmlUnicode( "&oacute;", '\u00f3' ),
                                                    new HtmlUnicode( "&ocirc;", '\u00f4' ),
                                                    new HtmlUnicode( "&otilde;", '\u00f5' ),
                                                    new HtmlUnicode( "&ouml;", '\u00f6' ),
                                                    new HtmlUnicode( "&oslash;", '\u00f8' ),
                                                    new HtmlUnicode( "&ugrave;", '\u00f9' ),
                                                    new HtmlUnicode( "&uacute;", '\u00fa' ),
                                                    new HtmlUnicode( "&ucirc;", '\u00fb' ),
                                                    new HtmlUnicode( "&uuml;", '\u00fc' ),
                                                    new HtmlUnicode( "&yacute;", '\u00fd' ),
                                                    new HtmlUnicode( "&thorn;", '\u00fe' ),
                                                    new HtmlUnicode( "&yuml;", '\u00ff' )
                                                };
   
    public static String encode(String text) {
        String tok = "";
        for(HtmlUnicode hu : HTML_UNICODE)
            tok += hu.getUnicode();
        StringTokenizer tokenizer = new StringTokenizer(text, tok, true);
        int count = tokenizer.countTokens();

        // pas besoin d'encoder
        if (count == 1)
            return text;
        // on met un buffer plus large vu qu'un caractere est remplace par
        // plusieurs
        StringBuilder buff = new StringBuilder(text.length() + count * 8);
        while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            if (token.length() == 1) {
                for(HtmlUnicode hu : HTML_UNICODE)
                    if(hu.getUnicode() == token.charAt(0))
                        buff.append(hu.getHtml());
            } else {
                buff.append(token);
            }
        }
        return buff.toString();
    }
   
    //cette classe permet un acces plus simplifie pour les tableaux
    private static class HtmlUnicode{
        private char unicode;
        private String html;
       
        public HtmlUnicode(String html, char unicode){
            this.html = html;
            this.unicode = unicode;
        }

        /**
         * @return the html
         */
        public String getHtml() {
            return html;
        }

        /**
         * @param html the html to set
         */
        public void setHtml(String html) {
            this.html = html;
        }

        /**
         * @return the unicode
         */
        public char getUnicode() {
            return unicode;
        }

        /**
         * @param unicode the unicode to set
         */
        public void setUnicode(char unicode) {
            this.unicode = unicode;
        }
       
    }

}

après pour l'utilisation c'est assez simple :
String text = "<html>éèàçbobï</html>";
System.out.println(HTTPUtils.encode(text));

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
22 août 2006 à 18:14
Salut,


regarde du coté de URLEncoder et URLDecoder

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
23 août 2006 à 01:26
merci mais c'est pas ça que je demande. Je ne demande pas d'encoder en adresse url mais au format html . C'est à dire "é" en "&eacute;" par exemple. Je demande l'équivalent de la fonction html_encode pour ceux qui connaissent bien php.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
23 août 2006 à 11:53
Salut,

petite correction dans le 'while' de la methode encode :

while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            if (token.length() == 1) {
                for(HtmlUnicode hu : HTML_UNICODE)
                    if(hu.getUnicode() == token.charAt(0)){
                        buff.append(hu.getHtml());
                        break;
                    }
            } else {
                buff.append(token);
            }
        }

j'ai oublié le break c'est domage de parser tout les éléments de HTML_UNICODE si celui que l'on cherche c'est le premier :P

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous