簡體   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