IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Encodage et decodage de contenu en HTML


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Encodage et decodage de contenu en HTML
    Bonjour je cherche une bibliothèque pouvant faire ceci :
    Encoder un texte en HTML (je l'enregistre en suite)
    Pour l'afficher : décoder le HTML mais en ayant le choix des balises à décoder (par exemple décoder unique ment les balises <p>, <a>, etc..)
    J'ai cherché du coté de Jsoup mais apparemment c'est pas fait pour.
    Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je suppose que par encoder un texte en HTML, tu parles de conversion ? Convertir du texte brut en HTML, par exemple, consiste à appliquer des règles personnalisées (genre convertir les newline en paragraphe, convertir les espaces insécables en "&nbsp;", convertir une séquence correspondant à telle expression régulière en telle structure html, etc.).

    Par décoder, je suppose que tu parles de parser (encodage/décodage se rapporte plutôt à la conversion de caractères en code numérique, pour représenter des caractères dans des octets). JSoup parse du html, donc toutes les balises html. Je ne suis pas sûr de comprendre d'ailleurs ce que veut dire parser que les <p> et les <a>. Peut-être que la bibliothèque Jericho est ce que tu cherches, mais tu devrais décrire fonctionnellement ce que tu voudrais faire, plutôt que d'utiliser des termes techniques.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Pour l'encodage je veux juste rendre le html non lisible (les < en &lt; les " en &quot; , etc..)
    et à partir de ce texte décoder le texte pour qu'il redevienne du html (operation inverse) mais appliquer ce decodage uniquement à certaines balise html que je fournirais (et qui correspondent aux balises proposé par mon éditeur ckeditor).

  4. #4
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Finalement j'ai trouvé un compromis avec Jsoup, il n'encode pas les tag que j'ai selectionné mais ceci n'est pas très important s'ils sont en clair dans ma base de données j'ai 2 méthodes encod et decod qui encode et decod mon html

    Datas.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [...]
        public final String[] ARRAYTAGENCOD = {"p", "strong", "em", "u", "s", "a", "img"};
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
        protected String encod(String str) {
            if (str == null) {
                return "";
            }
            Whitelist whitelist = new Whitelist();
            for (String tag : Datas.ARRAYTAGENCOD) {
                whitelist.addTags(tag);
            }
            whitelist.addAttributes("a", "href");
            whitelist.addAttributes("img", "src", "width", "height");
            whitelist.addEnforcedAttribute("a", "rel", "nofollow");
            whitelist.addEnforcedAttribute("a", "target", "_blank");
            whitelist.addProtocols("a", "href", "ftp", "http", "https");
            str = Jsoup.clean(str, whitelist);
            Matcher matcher;
            Pattern pattern;
            String replace;
     
            pattern = Pattern.compile("&");
            matcher = pattern.matcher(str);
            replace = "&amp;";
            str = matcher.replaceAll(replace);
           return str;
        }
     
        protected String decod(String str) {
            if (str == null) {
                str = "";
            }
            Matcher matcher;
            Pattern pattern;
            String replace;
            pattern = Pattern.compile("&amp;");
            matcher = pattern.matcher(str);
            replace = "&";
            str = matcher.replaceAll(replace);
            return str;
        }
    Si quelqu'un veut modifier son texte je lui renvoie le texte non décodé (car j'utilise ck editor via primefaces)
    j'utilise aussi l'attribut escape="true" de JSF/Primefaces mais je m'en méfie, j'aimerais avoir la certitude que le traitement escape se fait côté serveur, si quelqu'un a cette information ?..
    Merci

  5. #5
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Salut stc074,

    Généralement, en web, tu ne te serviras que de la fonctionnalité permettant de convertir les caractères sensibles (cf: <, > etc) vers les entités HTML, tu stockes les données en base tels que tu les reçois. Les frameworks gèrent très bien les conversions d'entités HTML et je ne vois pas pourquoi tu t'en méfies, au contraire tu risques plus de créer des failles en utilisant tes méthodes qu'en utilisant les fonctionnalités à ta disposition.
    Le traitement de conversion auquel tu fais référence se fait coté serveur.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  6. #6
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Ok, merci pour ces précisions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer contenu balises HTML
    Par Sopra dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/04/2007, 16h45
  2. BO - Contenu cellule html
    Par rickar dans le forum Designer
    Réponses: 2
    Dernier message: 12/03/2007, 12h34
  3. Envoyer du contenu par html
    Par poussinphp dans le forum Delphi
    Réponses: 3
    Dernier message: 30/07/2006, 14h07
  4. encodage et decodage
    Par stehga dans le forum C
    Réponses: 8
    Dernier message: 06/04/2006, 16h10
  5. [String] Encodage de caractères pour une sortie HTML
    Par elitost dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 10/11/2004, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo