我需要对发送给html5实体的邮件中的特殊字符进行转义,因为即使将邮件作为utf8发送,某些客户端邮件也无法正确显示它们。我不想直接在邮件中使用实体,因为邮件是由测试人员制作的,我们也不想强制测试人员学习所有html5实体。
我尝试使用
MyMethod(int? somePara)
但是它们都转义了somePara : ""
,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;
}
这就是我想要的,但是没有更标准的东西了吗?
答案 0 :(得分:1)
以下代码仅帮助您转换特殊字符。
import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.text.translate.AggregateTranslator;
import org.apache.commons.text.translate.EntityArrays;
import org.apache.commons.text.translate.LookupTranslator;
public String encodeHTML(String s) {
StringEscapeUtils.Builder buider =StringEscapeUtils
.builder(new AggregateTranslator(new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE),
new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE)));
return buider.escape(s).toString();
}