33 votes

Existe-t-il une classe JDK pour effectuer le codage HTML (mais pas le codage URL)?

Je suis familier avec l' java.net.URLEncoder et java.net.URLDecoder les classes. Cependant, j'ai seulement besoin de HTML de style de codage. (Je ne veux pas ' ' remplacé par '+', etc). Je ne suis pas au courant de tout JDK construit dans la classe qui va juste faire le codage HTML. Est-il un? Je suis conscient du fait que d'autres choix (par exemple, Jakarta Commons Lang 'StringEscapeUtils', mais je ne veux pas ajouter une autre dépendance externe pour le projet où j'ai besoin de cela.

Je suis en espérant que quelque chose a été ajouté à une récente JDK (aka 5 ou 6) qui permettra de faire ce que je ne sais pas. Sinon j'ai rouler mon propre.

45voto

John Case Points 614

Il n'y a pas un JDK construit en classe pour ce faire, mais il fait partie de la Jakarta commons-lang de la bibliothèque.

String escaped = StringEscapeUtils.escapeHtml3(stringToEscape);
String escaped = StringEscapeUtils.escapeHtml4(stringToEscape);

Consultez la JavaDoc

L'ajout de la dépendance est généralement aussi simple que de laisser tomber le pot quelque part, et commons-lang a donc de nombreux utilitaires, qu'il est souvent utile de l'avoir à bord.

14voto

Rawton Evolekam Points 103

Un moyen simple semble être celui-ci:

 public static String encodeHTML(String s)
{
    StringBuffer out = new StringBuffer();
    for(int i=0; i<s.length(); i++)
    {
        char c = s.charAt(i);
        if(c > 127 || c=='"' || c=='<' || c=='>')
        {
           out.append("&#"+(int)c+";");
        }
        else
        {
            out.append(c);
        }
    }
    return out.toString();
}
 

Source: http://forums.thedailywtf.com/forums/p/2806/72054.aspx#72054

12voto

Eddie Points 27755

Apparemment, la réponse est "non". C'était malheureusement un cas où je devais faire quelque chose et je ne pouvais pas ajouter une nouvelle dépendance externe pour cela - à court terme. Je suis d'accord avec tout le monde que l'utilisation de Commons Lang est la meilleure solution à long terme. C'est ce que j'irai avec une fois que je pourrai ajouter une nouvelle bibliothèque au projet.

Il est dommage que quelque chose d'une telle utilisation courante ne se trouve pas dans l'API Java.

1voto

bitboxer Points 371

Veuillez ne pas rouler le vôtre. Utilisez Jakarta Commons Lang. Il est testé et éprouvé pour fonctionner. N'écrivez pas de code avant de le faire. "Pas inventé ici" ou "Pas une autre dépendance" n'est pas une très bonne base pour décider quoi choisir / écrire.

0voto

simon Points 3999

Non. Je recommanderais d'utiliser les StringEscapeUtils que vous avez mentionnés, ou par exemple JTidy ( http://jtidy.sourceforge.net/multiproject/jtidyservlet/apidocs/org/w3c/tidy/servlet/util/HTMLEncode.html ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X