HTML、JS、JSON特殊字符
JS到HTML特殊字符转换这几天做项目,发现从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 '<b>msg</b>&nbsp;&#35;' 通过JS显示在HTML页面中时,显示成了 msg # ,并不是<b>msg</b>&nbsp;&#35;,这是由于<与>之间的内容看作是HTML标签了,而以&开头的&nbsp;与&#35;为HTML实体,所以显示不正常。
解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:
<html><body><div id="div1" ></div><div id="div2" ></div><script >var str = '<b>msg</b>&nbsp;&#35;';document.all.div1.innerHTML='<pre>'+str+'</pre>';//js中的字符串正常显示在HTML页面中String.prototype.displayHtml= function(){//将字符串转换成数组var strArr = this.split('');//HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换var htmlChar="&<>";for(var i = 0; i< str.length;i++){//查找是否含有特殊的HTML字符if(htmlChar.indexOf(str.charAt(i)) !=-1){//如果存在,则将它们转换成对应的HTML实体switch (str.charAt(i)) {case '<':strArr.splice(i,1,'&#60;');break;case '>':strArr.splice(i,1,'&#62;');break;case '&':strArr.splice(i,1,'&#38;');}}}return strArr.join('');}alert(str.displayHtml());document.all.div2.innerHTML=str.displayHtml();</script></body></html>
上面在赋给div之前没有转换,所以显示不正常,第二个div显示正常,显示结果如下:
http://dl.iteye.com/upload/attachment/366660/10d85087-cd31-3f43-b935-2dfaa0d7ac44.jpg
JSP到HTML特殊字符转换
以上是通过JS将后台传递过来的数据显示在页面之前的转换,有时是通过JSP生成HTML页面内容,此时的特殊字符会比上面多,另外此时的转换需要通过服务器端转换后再输出到HTML页面。如 jsp页面在生成HTML时如下:
页:
[1]