Java 使用StringEscapeUtils.escapeHtml()时排除五个基本XML实体
我正在尝试使用StringEscapeUtils.escapeHtmlString字符串将网页上的特殊字符转换为HTML实体。但是它也转义了五个基本的XML实体,它们是,、和&,这使得我的HTML无法正确呈现,因为前面提到的字符是转义的 所以我接下来要做的是使用StringEscapeUtils.unescapeXmlString字符串返回',并返回到它们的单字符形式Java 使用StringEscapeUtils.escapeHtml()时排除五个基本XML实体,java,html,stringescapeutils,Java,Html,Stringescapeutils,我正在尝试使用StringEscapeUtils.escapeHtmlString字符串将网页上的特殊字符转换为HTML实体。但是它也转义了五个基本的XML实体,它们是,、和&,这使得我的HTML无法正确呈现,因为前面提到的字符是转义的 所以我接下来要做的是使用StringEscapeUtils.unescapeXmlString字符串返回',并返回到它们的单字符形式 还有别的办法吗?当StringEscapeUtils进行HTML转义时,是否不包括我提到的5个实体?您可以构建自己的转换器: p
还有别的办法吗?当StringEscapeUtils进行HTML转义时,是否不包括我提到的5个实体?您可以构建自己的转换器:
public static final CharSequenceTranslator ESCAPE_HTML4 = new AggregateTranslator(
new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE),
new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE)
);
这个特殊的转换器省略了EntityArrays.BASIC_转义数据
因此,它将转换特殊字符,并对HTML标记进行ommit
使用以下命令转换文本变量:
text = ESCAPE_HTML4.translate(text);
为什么要这么做?为什么不使用字符编码,允许所有字符按原样显示?我试图转义的html将作为电子邮件发送。因此,如果接收它的一个具有不同的字符编码,它将显示为?。这就是为什么我试图将所有字符放入html实体表单中。电子邮件也应该包含字符集。除非接收它的人有一个90年代左右的电子邮件客户端,否则消息部分的内容类型应该起作用。当然,您应该向HTML添加适当的元标记。