是这样的,我想让用户在页面写代码,存到数据库里,用FCKeditor,网上下载了个插件,可以选择语言,折叠复制什么的
但它存在到数据库里为了保留格式,产生了大量的标签,一行一个LI标签,classname,还有大量的 
由于使用的是ACCESS数据库,空间有限,所以我想用PRE标签解决格式的问题。
我不知道用PRE标签在数据库里会不会节省很多空间。
请前辈解答!

解决方案 »

  1.   


    这太神奇了,明显除了原来的内容,还要多一对pre标签
      

  2.   

    可以选择读出来的时候再替换空格为nbsp;换行为<br />
    不过你如果用编辑器,应该是连标签一下子都存进去。
    为了保存格式,classname都是必要的啊。
    你可与对比一下一篇排版完的文章存进去的大小,和用textarea直接存进去的大小。
      

  3.   

    LZ的意思是在保存的时候保存pre中空格和换行成为编码吧,估计只占一个字节。
      

  4.   

    多pre也比多那么多&nbsp;好啊,一个空格6个字符了
      

  5.   

    还是建议你弄几篇在你的系统中属于典型情况的文章,分别用编辑器方式和textarea不保存格式方式存一下。
    对比一下看一看。
      

  6.   

    我试了一下,用pre标签节省三分之二的空间,但是用PRE之后,写进去的js我原来是替换了的,但输出到页面时又必须还原回来,结果被执行了,比较危险
      

  7.   

    过滤一下 或者加密HTML标签HTML转换 /// <summary>
            /// 插入SQL时替换字符
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string Encode(string str)
            {
                str = str.Replace("'", "''");
                str = str.Replace("\"", "&quot;");
                str = str.Replace("<", "&lt;");
                str = str.Replace(">", "&gt;");
                str = str.Replace("\n", "<br>");
                str = str.Replace("“", "&ldquo;");
                str = str.Replace("”", "&rdquo;");
                return str;
            }        /// <summary>
            /// 取SQL值时还原字符
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string Decode(string str)
            {
                str = str.Replace("&rdquo;", "”");
                str = str.Replace("&ldquo;", "“");
                str = str.Replace("<br>", "\n");
                str = str.Replace("&gt;", ">");
                str = str.Replace("&lt;", "<");
                str = str.Replace("&quot;", "\"");
                str = str.Replace("''", "'");
                return str;
            }
      

  8.   

    子夜这个代码copy的吧。用文章大量用这个代码,性能有害。文章几k几百k的内容,大量无须正则表达式的简单替换,显然不如stringbuilder。