Мне нужно экранировать специальные символы в почте для объектов html5, потому что, даже если почта отправляется как utf8, некоторые клиентские письма не отображают их правильно. Я не хочу использовать сущности непосредственно в почте, так как письма создаются тестерами, и мы не хотим заставлять тестировщиков изучать все сущности html5.
Я пытался использовать
org.unbescape.html.HtmlEscape.escapeHtml(
string,
HtmlEscapeType.HTML5_NAMED_REFERENCES_DEFAULT_TO_DECIMAL,
HtmlEscapeLevel.LEVEL_2_ALL_NON_ASCII_PLUS_MARKUP_SIGNIFICANT
)
ссылка
но они оба экранируют символы <
, >
, "
и '
.
Теперь я использую самодельный метод:
public static final String encodeHTML(final String s) {
String res = HtmlEscape.escapeHtml(
s,
HtmlEscapeType.HTML5_NAMED_REFERENCES_DEFAULT_TO_DECIMAL,
HtmlEscapeLevel.LEVEL_2_ALL_NON_ASCII_PLUS_MARKUP_SIGNIFICANT
);
res = res.replaceAll("<", "<");
res = res.replaceAll(">", ">");
res = res.replaceAll(""", "\"");
res = res.replaceAll("'", "'");
res = res.replaceAll("&", "&");
return res;
}
Пример:
encodeHTML("<div id='a' class\"ciao\">& ®</div>")
* * Тысяча двадцать-одина выходы: * * 1 022
<div id='a' class"ciao">& ®</div>
Это то, что я хочу, но нет ничего более стандартного?