繁体   English   中英

为什么转义字符在HTML中显示?

[英]why are the escape characters being displayed in HTML?

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

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

以及带有转义的相应字符串如下:

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

我已经读过某个地方,taglib中的核心只会逃避基本的,例如>,<,“,\\ t和空格。但是这些转义序列都没有从html代码中删除。你们中的任何人都知道如何成为能解决这个问题吗?谢谢

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

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


                } .....
       return result;
}

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

if (character == '<') {
    result.append("&lt;");
}
else if (character == '>') {
    result.append("&gt;");
// ...

删除它。 你不需要它。 JSTL <c:out>已经完成了这项工作。

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

否则,您的HTML字符串将被转义两次。 每个&成为&amp; 再一次等等。 如果你真的需要自己动手逃跑(为什么?)那么就根本不要使用<c:out>

${someBean.someProperty}

或者通过escapeXml="false"关闭它的转义:

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

BalusC已经钉了它。

还有几点要点:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM