我想在JSP页面中转义字符。哪个更合适,escapeXml
或escapeHtml
?
答案 0 :(得分:19)
它们是为不同目的而设计的,HTML有许多实际上没有XML的实体。 XML只有5个转义符:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
虽然HTML已加载 - 请考虑
©
等。除非在标题中包含定义,否则这些HTML代码在XML中无效。数字代码(如版权符号的©
)在两者中均有效。
答案 1 :(得分:17)
JSP中没有escapeHtml
这样的东西。您通常使用<c:out escapeXml="true">
(它的方式已默认为true
,因此您可以省略它)或fn:escapeXml()
以在JSP中转义HTML。
E.g。
<c:out value="Welcome, ${user.name}" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />
它将作为XML实体转义它们,它们在纯HTML中也能很好地工作。它们只是字面上称为XML实体,因为HTML实体在XML中是无效的。
答案 2 :(得分:1)
由于您要将HTML发送回消费者,我会使用escapeHtml
。
escapeXml
仅支持转义五个基本XML实体(gt,lt,quot,amp,apos),而escapeHtml
支持转义所有已知的HTML 4.0 entities。
答案 3 :(得分:1)
假设您指的是公共字符串StringEscapeUtils,escapeXml仅处理<>"'&
,而escapeHtml则涵盖更丰富的字符集。