【问题标题】:why are the escape characters being displayed in HTML?为什么转义字符显示在 HTML 中?
【发布时间】:2012-01-11 22:50:43
【问题描述】:

在网页上显示内容之前,我需要转义一些文本,这实际上是正确的。但是,当我在 html 中显示字符串时,仍会显示转义字符。下面就是这样一个例子:

hello there my ni&%ame is + - && !

和相应的转义字符串如下:

hello there my ni&%ame is + - && !

我在某处读到,taglib 中的核心只会转义基本的那些,例如 >、

以下是用于将特定字符转换为其转义字符的部分代码:

while (character != CharacterIterator.DONE ){
         if (character == '<') {
           result.append("&lt;");
         }
         else if (character == '>') {
           result.append("&gt;");
         }
         else if (character == '&') {
           result.append("&amp;");


                } .....
       return result;
}

转义部分已完成并且工作正常.. 当我尝试在 html 页面上显示带有转义字符的字符串时会出现问题

【问题讨论】:

  • 好的,您应该明确提及并标记它。 “Java”是一个非常广泛的主题,而“taglib”不够具体。好吧,至于您的具体问题,我看不到/不明白为什么这是一个问题。您可能会在生成的 HTML 源代码中看到它们被转义,但您应该在浏览器视图中正确地看到所需的字符。请详细说明具体问题。
  • @NikitaBeloglazov 我首先设法转义了字符串......问题是当我尝试在 html 中显示转义字符串时,转义字符仍在显示并且没有转换为它们各自的正确字符
  • 转义!=删除。为什么要删除某些字符?转义包括用转义序列替换特殊的 HTML 字符,以便它们可以显示并且不会被解释为 HTML 标记。您还应该向我们展示您是如何转义的,因为 + 和 - 没有理由被转义:它们不是特殊的 HTML 字符。 \t 和空格相同。
  • 你能提供一些在页面中插入字符串的代码吗?
  • 我的意思是我希望 &amp 被替换为实际 & 当显示在 html 中而不是实际打印 &amp ......上面的第二句话是它是如何在 html 中显示的,我希望它“正常”显示...就像第一句话一样...抱歉没有清楚地解释自己

标签: java html jsp escaping jstl


【解决方案1】:
if (character == '<') {
    result.append("&lt;");
}
else if (character == '>') {
    result.append("&gt;");
// ...

删除这个。你不需要它。 JSTL &lt;c:out&gt; 已经完成了这项工作。

<c:out value="${someBean.someProperty}" />

否则您的 HTML 字符串会被转义两次。每个&amp;amp; 再次变为&amp;amp;,依此类推。 如果您真的需要自己进行转义(为什么?),那么根本不要使用&lt;c:out&gt;

${someBean.someProperty}

或通过escapeXml="false"关闭其转义:

<c:out value="${someBean.someProperty}" escapeXml="false" />

【讨论】:

【解决方案2】:

BalusC 成功了。

补充几点:

  • 如果您遇到网页看起来不正确的问题,您应该做的一件事是使用您的网络浏览器的“查看源代码”功能查看原始 HTML。在这种情况下,它会显示双重转义,并更快地意识到问题所在。

  • 在 HTML 中,您应该只需要转义 &lt;&gt;&amp;。如果您的 HTML 以 UTF-8 编码(并且内容类型也是如此),其他字符应该可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2013-09-19
    • 2021-12-09
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多