首先,我是用在线编辑器上传一些内容到数据库中的,然后前台读取数据库,但前台读取时,页面并没有识别数据库中html标记,而是和文字一起显示出来的。请问各位高手,这一问题应该怎么解决,找到了好久,也没找到一个可行的方法!

解决方案 »

  1.   

    html标记里的一些特殊字符是需要转换的
    比如:
    < &lt;
    > &gt;
    ......
    这里有特殊字符转义表:
    http://www.360doc.com/content/10/1129/10/3482183_73341266.shtml
      

  2.   


    对于html中一些指定的标签需要转义,类似java代码中的转义代码,不然浏览器会把这些元素解析成html的标签,所以在页面上不会显示出来。
      

  3.   

    可以对代码进行转换,如:
    /**
     * HTML元素value值过滤处理函数:将 <code> & &lt; &gt;\ </code> 等特殊字符作转化处理
     * 
     * @sample <code>
         *    &lt;input type="text" name="Name" value="<%=MyString.filterForHTMLValue(sContent)%>"&gt;
         * </code>
     * @param _sContent
     *            指定的文本内容
     * @return 处理后的文本内容
     */
    public static String filterForHTMLValue(String _sContent) {
    if (_sContent == null)
    return ""; char[] srcBuff = _sContent.toCharArray();
    int nLen = srcBuff.length;
    if (nLen == 0)
    return ""; StringBuffer retBuff = new StringBuffer((int) (nLen * 1.8)); for (int i = 0; i < nLen; i++) {
    char cTemp = srcBuff[i];
    switch (cTemp) {
    case '&': // 转化:& -->&amp;
    // 处理unicode代码
    if ((i + 1) < nLen) {
    cTemp = srcBuff[i + 1];
    if (cTemp == '#')
    retBuff.append("&");
    else
    retBuff.append("&amp;");
    } else
    retBuff.append("&amp;");
    break;
    case '<': // 转化:< --> &lt;
    retBuff.append("&lt;");
    break;
    case '>': // 转化:> --> &gt;
    retBuff.append("&gt;");
    break;
    case '\"': // 转化:" --> &quot;
    retBuff.append("&quot;");
    break;
    default:
    retBuff.append(cTemp);
    }// case
    }// end for return retBuff.toString();
    }