[英]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("<");
}
else if (character == '>') {
result.append(">");
}
else if (character == '&') {
result.append("&");
} .....
return result;
}
轉義部分已完成且工作正常..當我嘗試將帶有轉義字符的字符串顯示到html頁面時,會出現問題
if (character == '<') {
result.append("<");
}
else if (character == '>') {
result.append(">");
// ...
刪除它。 你不需要它。 JSTL <c:out>
已經完成了這項工作。
<c:out value="${someBean.someProperty}" />
否則,您的HTML字符串將被轉義兩次。 每個&
成為&
再一次等等。 如果你真的需要自己動手逃跑(為什么?)那么就根本不要使用<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.