发布网页代码内容,在后台发布时没问题,但在前台发布时,保存到数据库和前台浏览时都是乱码.
比如,发布以下内容时:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS+JS打造类似QQ的网站导航菜单特效</title>
<style type="text/css">
body {font:12px Tahoma, sans-serif;color:#4D4D4D;margin:0px; text-align:center}
a{color:#4D4D4D;text-decoration:none}
a:hover{color:#AD0000;text-decoration:none}
#menu {width:160px;margin:0px;padding:0px;text-align:left;list-style:none;border:1px solid #B0D4ED}
#menu .item {margin:0px;padding:0px;list-style:none; text-align:center}
a.title:link,a.title:visited,a.title:hover {display:block;height:30px;line-height:30px; margin-top:1px;background:#E1F2FD;border-top:1px solid #B0D4ED;border-bottom:1px solid #B0D4ED;font-weight:bold;}
#menu .item ul {margin:0;list-style:none;display:none;text-align:center}
#menu .item ul li {height:24px;line-height:22px;border-bottom:1px solid #BFDBEE;margin:0 20px}
</style>
<script language="javascript" type="text/javascript">
// --- 获取ClassName
document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var j = 0; j < elem.length; j++) {
var classes = elem[j].className;
if (myclass.test(classes)) retnode.push(elem[j]);
}
return retnode;
}
// --- 隐藏所有
function HideAll() {
var items = document.getElementsByClassName("optiton");
for (var j=0; j<items.length; j++) {
items[j].style.display = "none";
}
}
// --- 设置cookie
function setCookie(sName,sValue,expireHours) {
var cookieString = sName + "=" + escape(sValue);
//;判断是否设置过期时间
if (expireHours>0) {
var date = new Date();
date.setTime(date.getTime + expireHours * 3600 * 1000);
cookieString = cookieString + "; expire=" + date.toGMTString();
}
document.cookie = cookieString;
}
//--- 获取cookie
function getCookie(sName) {
var aCookie = document.cookie.split("; ");
for (var j=0; j < aCookie.length; j++){
var aCrumb = aCookie[j].split("=");
if (escape(sName) == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
window.onload = function() {
var show_item = "opt_1";
if (getCookie("show_item") != null) {
show_item= "opt_" + getCookie("show_item");
}
document.getElementById(show_item).style.display = "block";
var items = document.getElementsByClassName("title");
for (var j=0; j<items.length; j++) {
items[j].onclick = function() {
var o = document.getElementById("opt_" + this.name);
if (o.style.display != "block") {
HideAll();
o.style.display = "block";
setCookie("show_item",this.name);
}
else {
o.style.display = "none";
}
}
}
}
</script>
</head>
<body>
<ul id="menu">
<li class="item"><a href="javascript:void(0)" class="title" name="1">菜单选项一</a>
<ul id="opt_1" class="optiton">
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
<li class="item"><a href="javascript:void(0)" class="title" name="2">菜单选项二</a>
<ul id="opt_2" class="optiton">
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
<li class="item"><a href="javascript:void(0)" class="title" name="3">菜单选项三</a>
<ul id="opt_3" class="optiton">
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
<li class="item"><a href="javascript:void(0)" class="title" name="4">菜单选项四</a>
<ul id="opt_4" class="optiton">
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
</ul>
</body>
</html>
保存到数据库或在前台浏览的结果是:
lt!DOCTYPE html PUBLIC -W3CDTD XHTML 1.0 TransitionalEN A href=httpwww.w3.orgTRxhtml1DTDxhtml1-transitional.dtdhttpwww.w3.orgTRxhtml1DTDxhtml1-transitional.dtdAgtBRlthtml xmlns=A href=httpwww.w3.org1999xhtmlhttpwww.w3.org1999xhtmlAgtBRltheadgtBRltmeta http-equiv=Content-Type content=texthtml charset=gb2312 gtBRlttitlegtCSS+JS打造类似QQ的网站导航菜单特效lttitlegtBRltstyle type=textcssgtBRbody font12px Tahoma, sans-serifcolor4D4D4Dmargin0px text-aligncenterBRacolor4D4D4Dtext-decorationnoneBRahovercolorAD0000text-decorationnoneBRmenu width160pxmargin0pxpadding0pxtext-alignleftlist-stylenoneborder1px solid B0D4EDBRmenu .item margin0pxpadding0pxlist-stylenone text-aligncenterBRa.titlelink,a.titlevisited,a.titlehover displayblockheight30pxline-height30px margin-top1pxbackgroundE1F2FDborder-top1px solidnbsp B0D4EDborder-bottom1px solid B0D4EDfont-weightboldBRmenu .item ul margin0list-stylenonedisplaynonetext-aligncenterBRmenu .item ul li height24pxline-height22pxborder-bottom1px solid BFDBEEmargin0 20pxBRltstylegtBRltscript language=javascript type=textjavascriptgtBR --- 获取ClassNameBRdocument.getElementsByClassName = functioncl BRnbspvar retnode = BRnbspvar myclass = new RegExpb+cl+bBRnbspvar elem = this.getElementsByTagName*BRnbspfor var j = 0 j lt elem.length j++ BRnbsp var classes = elemj.classNameBRnbsp if myclass.testclasses retnode.pushelemjBRnbspBRnbspreturn retnodeBRBR --- 隐藏所有BRfunction HideAll BRnbspvar items = document.getElementsByClassNameoptitonBRnbspfor var j=0 jltitems.length j++ BRnbsp itemsj.style.display = noneBRnbspBRBR --- 设置cookieBRfunction setCookiesName,sValue,expireHours BRnbspvar cookieString = sName + = + escapesValueBRnbsp判断是否设置过期时间BRnbspif expireHoursgt0 BRnbspnbsp var date = new DateBRnbspnbsp date.setTimedate.getTime + expireHours * 3600 * 1000BRnbspnbsp cookieString = cookieString + expire= + date.toGMTStringBRnbspBRnbspdocument.cookie = cookieStringBRBR--- 获取cookieBRfunction getCookiesName BRnbsp var aCookie = document.cookie.split BRnbsp for var j=0 j lt aCookie.length j++BRnbspvar aCrumb = aCookiej.split=BRnbspif escapesName == aCrumb0BRnbspnbsp return unescapeaCrumb1BRnbsp BRnbsp return nullBRBRwindow.onload = function BRnbspvar show_item = opt_1BRnbspif getCookieshow_item != null BRnbspnbsp show_item= opt_ + getCookieshow_itemBRnbspBRnbspdocument.getElementByIdshow_item.style.display = blockBRnbspvar items = document.getElementsByClassNametitleBRnbspfor var j=0 jltitems.length j++ BRnbsp itemsj.onclick = function BRnbspnbsp var o = document.getElementByIdopt_ + this.nameBRnbspnbsp if o.style.display != block BRnbspnbspnbsp HideAllBRnbspnbspnbsp o.style.display = blockBRnbspnbspnbsp setCookieshow_item,this.nameBRnbspnbsp BRnbspnbsp else BRnbspnbspnbsp o.style.display = noneBRnbspnbsp BRnbsp BRnbspBRBRltscriptgtBRltheadgtBRltbodygtBRltul id=menugtBRnbspltli class=itemgtlta href=javascriptvoid0 class=title name=1gt菜单选项一ltagtBRnbspnbsp ltul id=opt_1 class=optitongtBRnbspnbspnbsp ltligtlta href=gt子菜单一ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单二ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单三ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单四ltagtltligtBRnbspnbsp ltulgtBRnbspltligtBRnbspltli class=itemgtlta href=javascriptvoid0 class=title name=2gt菜单选项二ltagtBRnbspnbsp ltul id=opt_2 class=optitongtBRnbspnbspnbsp ltligtlta href=gt子菜单一ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单二ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单三ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单四ltagtltligtBRnbspnbsp ltulgtBRnbspltligtBRnbspltli class=itemgtlta href=javascriptvoid0 class=title name=3gt菜单选项三ltagtBRnbspnbsp ltul id=opt_3 class=optitongtBRnbspnbspnbsp ltligtlta href=gt子菜单一ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单二ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单三ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单四ltagtltligtBRnbspnbsp ltulgtBRnbspltligtBRnbspltli class=itemgtlta href=javascriptvoid0 class=title name=4gt菜单选项四ltagtBRnbspnbsp ltul id=opt_4 class=optitongtBRnbspnbspnbsp ltligtlta href=gt子菜单一ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单二ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单三ltagtltligtBRnbspnbspnbsp ltligtlta href=gt子菜单四ltagtltligtBRnbspnbsp ltulgtBRnbspltligtBRltulgt BRltbodygtBRlthtmlgt
请各位测试
[此贴子已经被作者于2007-8-23 17:43:34编辑过]