online htmlentities escapehtml4 convert codes characters and acute java html escaping

java - htmlentities - html encode chars



Java escape HTML (6)

Aquí hay una versión que reemplaza a los seis personajes importantes recomendados por OWASP . Esto es adecuado para elementos de contenido HTML como <textarea>...</textarea> , pero no atributos HTML como <input value="..."> porque estos últimos a menudo se dejan sin comillas.

StringUtils.replaceEach(text, new String[]{"&", "<", ">", "/"", "''", "/"}, new String[]{"&amp;", "&lt;", "&gt;", "&quot;", "&#x27;", "&#x2F;"});

actualmente utilizo org.apache.commons.lang.StringEscapeUtils escapeHtml() para escapar etiquetas HTML no deseadas en mis cadenas, pero luego me di cuenta de que escapa a los caracteres con acentos a &something;, , también, que no quiero.

¿Conoces alguna solución para escaparse de las etiquetas HTML, pero dejar mis cartas especiales (bueno, para algunas personas, son normales aquí;]) tal como son?

¡Gracias por adelantado!

balázs



Sé que es demasiado tarde para agregar mi comentario, pero tal vez el siguiente código sea útil:

public static String escapeHtml(String string) { StringBuilder escapedTxt = new StringBuilder(); for (int i = 0; i < string.length(); i++) { char tmp = string.charAt(i); switch (tmp) { case ''<'': escapedTxt.append("&lt;"); break; case ''>'': escapedTxt.append("&gt;"); break; case ''&'': escapedTxt.append("&amp;"); break; case ''"'': escapedTxt.append("&quot;"); break; case ''/''': escapedTxt.append("&#x27;"); break; case ''/'': escapedTxt.append("&#x2F;"); break; default: escapedTxt.append(tmp); } } return escapedTxt.toString(); }

¡disfrutar!


Si es para Android, use TextUtils.htmlEncode(String) lugar.


Si está usando Wicket, use:

import org.apache.wicket.util.string.Strings; ... CharSequence cs = Strings.escapeMarkup(src); String str = Strings.escapeMarkup(src).toString();


StringUtils.replaceEach(str, new String[]{"&", "/"", "<", ">"}, new String[]{"&amp;", "&quot;", "&lt;", "&gt;"})