我在 MySql 中有一个表,其中包含 html 标记。我试图在 div 中加载该数据,但不是显示 html,而是向我显示 html 标记。
而不是显示' Sushil '
这是节目<div><h3>Sushil</h3></div>
。
我使用 JSP 作为服务器端组件。它使用 JSTL 标签从数据库中获取数据。
我不知道如何解决这个问题。
这是我多年前制作的一个旧课程,可能很有用,像这样使用:
out.println(HTML.decode(contentFromDB));
package com.spectotechnologies.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Alexandre Lavoie
*/
public class HTML
{
private static final int HTML_ENTITIES_MINUS_CHARACTER = 160;
private static final int HTML_ENTITIES_START_CHARACTER = 32;
private static final String HTML_ENCODING_TABLE[] = {
" ", //
"!", // !
""", // "
"#", // #
"$", // $
"%", // %
"&", // &
"'", // '
"(", // (
")", // )
"*", // *
"+", // +
",", // ,
"-", // -
".", // .
"⁄", // /
"0", // 0
"1", // 1
"2", // 2
"3", // 3
"4", // 4
"5", // 5
"6", // 6
"7", // 7
"8", // 8
"9", // 9
":", // :
";", // ;
"<", // <
"=", // =
">", // >
"?", // ?
"@", // @
"A", // A
"B", // B
"C", // C
"D", // D
"E", // E
"F", // F
"G", // G
"H", // H
"I", // I
"J", // J
"K", // K
"L", // L
"M", // M
"N", // N
"O", // O
"P", // P
"Q", // Q
"R", // R
"S", // S
"T", // T
"U", // U
"V", // V
"W", // W
"X", // X
"Y", // Y
"Z", // Z
"[", // [
"\", // /
"]", // ]
"^", // ^
"_", // _
"`", // `
"a", // â
"b", // b
"c", // c
"d", // d
"e", // e
"f", // f
"g", // g
"h", // h
"i", // i
"j", // j
"k", // k
"l", // l
"m", // m
"n", // n
"o", // o
"p", // p
"q", // q
"r", // r
"s", // s
"t", // t
"u", // u
"v", // v
"w", // w
"x", // x
"y", // y
"z", // z
"{", // {
"|", // |
"}", // }
"~", // ~
"", //
"€", // €
"", // �
"‚", // ‚
"ƒ", // ƒ
"„", // „
"…", // …
"†", // †
"‡", // ‡
"ˆ", // ˆ
"‰", // ‰
"Š", // Š
"‹", // ‹
"Œ", // Œ
"", // �
"Ž", // Ž
"", // �
"", // �
"‘", // ‘
"’", // ’
"“", // “
"”", // ”
"•", // •
"–", // –
"—", // —
"˜", // ˜
"™", // ™
"š", // š
"›", // ›
"œ", // œ
"", // �
"ž", // ž
"Ÿ", // Ÿ
" ", //
"¡", // ¡
"¢", // ¢
"£", // £
"¤", // ¤
"¥", // ¥
"¦", // ¦
"§", // §
"¨", // ¨
"©", // ©
"ª", // ª
"«", // «
"¬", // ¬
"­", //
"®", // ®
"¯", // ¯
"°", // °
"±", // ±
"²", // ²
"³", // ³
"´", // ´
"µ", // µ
"¶", // ¶
"·", // ·
"¸", // ¸
"¹", // ¹
"º", // º
"»", // »
"¼", // ¼
"½", // ½
"¾", // ¾
"¿", // ¿
"À", // À
"Á", // Á
"Â", // Â
"Ã", // Ã
"Ä", // Ä
"Å", // Å
"Æ", // Æ
"Ç", // Ç
"È", // È
"É", // É
"Ê", // Ê
"Ë", // Ë
"Ì", // Ì
"Í", // Í
"Î", // Î
"Ï", // Ï
"Ð", // Ð
"Ñ", // Ñ
"Ò", // Ò
"Ó", // Ó
"Ô", // Ô
"Õ", // Õ
"Ö", // Ö
"×", // ×
"Ø", // Ø
"Ù", // Ù
"Ú", // Ú
"Û", // Û
"Ü", // Ü
"Ý", // Ý
"Þ", // Þ
"ß", // ß
"à", // à
"á", // á
"â", // â
"ã", // ã
"ä", // ä
"å", // å
"æ", // æ
"ç", // ç
"è", // è
"é", // é
"ê", // ê
"ë", // ë
"ì", // ì
"í", // í
"î", // î
"ï", // ï
"ð", // ð
"ñ", // ñ
"ò", // ò
"ó", // ó
"ô", // ô
"õ", // õ
"ö", // ö
"÷", // ÷
"ø", // ø
"ù", // ù
"ú", // ú
"û", // û
"ü", // ü
"ý", // ý
"þ", // þ
"ÿ" // ÿ
};
public static String encode(String p_sToEncode)
{
int nCountChars;
String sResult = "";
String sFound;
// Check for characters to replace till end of string
for(nCountChars = 0;nCountChars < p_sToEncode.length();nCountChars++)
{
// Init to current character
sFound = "" + p_sToEncode.charAt(nCountChars);
// Check if character is in the list
if(p_sToEncode.charAt(nCountChars) >= HTML_ENTITIES_MINUS_CHARACTER)
{
sFound = HTML_ENCODING_TABLE[p_sToEncode.charAt(nCountChars) - HTML_ENTITIES_START_CHARACTER];
}
// Add to result
sResult += sFound;
}
return sResult;
}
public static String decode(String p_sToDecode)
{
Pattern oPattern;
Matcher oMatcher;
String sCode;
int nCode;
oPattern = Pattern.compile("&\\#?[0-9,a-z,A-Z]*;");
oMatcher = oPattern.matcher(p_sToDecode);
StringBuffer oBuffer = new StringBuffer(p_sToDecode.length());
while(oMatcher.find())
{
sCode = oMatcher.group(0);
for(nCode = 0;nCode < HTML_ENCODING_TABLE.length;nCode++)
{
if(sCode.equals(HTML_ENCODING_TABLE[nCode]))
{
sCode = "" + (char)(HTML_ENTITIES_START_CHARACTER + nCode);
break;
}
}
oMatcher.appendReplacement(oBuffer,Matcher.quoteReplacement(sCode));
}
oMatcher.appendTail(oBuffer);
return oBuffer.toString();
}
}
希望这可以帮助!
您将不得不转义您的 html 实体。so<
变成<
,>
变成>
, 等等。
如何在 JSP 表达式语言中进行 HTML 编码?可能是您需要解决的相关问题。
http://www.w3.org/TR/html4/sgml/entities.html是 HTML 4 中 HTML 实体的规范(我不相信更多是为 HTML5 创建的,但我可能是错的)
编辑:因此,反过来看起来有一个来自 Apache Commons 的名为“Commons Lang”的 Java 包,其中包含一个StringEscapeUtils
允许转义和取消转义 HTML 的类。
http://www.mytechtip.com/2009/02/encodedecode-html-in-java_6101.html