我的目标是在使用StringEscapeUtils.escapeHtml4
后将消息的特殊字母显示为常规文本。文本的例子:
<html>
<body>
<p>éô</p>
</body>
</html>
我的预期结果是使所有的HTML标签被转义,但不转义文本,即在这里:éô
代码示例:
String original = "<html><head><\head><>éô";
System.out.println("original: " + original);
String translated = StringEscapeUtils.escapeHtml4(original);
System.out.println("translated: " + translated);
输出:original: <html><head><head><body>éô
translated: <html><head><head><body>éô
我期望得到:<html><head><head><body>éô
我想我找到了这里提到的解决方案:带有重音字母的语言中的转义HTML
通过创建一个自定义转义方法,该方法将只使用两个查找翻译器:
public static final CharSequenceTranslator ESCAPE_HTML4_CUSTOM =
new AggregateTranslator(
new LookupTranslator(EntityArrays.BASIC_ESCAPE()),
new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE())
);
原方法StringEscapeUtils.escapeHtml4
中有:
public static final CharSequenceTranslator ESCAPE_HTML4 =
new AggregateTranslator(
new LookupTranslator(EntityArrays.BASIC_ESCAPE()),
new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE()),
new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE())
);