将HTML(按原样)保存到SQL 2005表

时间:2009-06-30 06:48:44

标签: html sql-server-2005

给出以下HTML“<b>demo</b>” 我想将它保存到SQL 2005表中 数据库保存字段中的强制,无编码,无转义字符

保存的HTML必须尽可能小 根据我的努力,我存储的html始终保存为编码&gt; html

修改
调试我的代码我发现我的HTML字符串被编码到我的StoredProcedure。 Server.HtmlDecode不会完全解码我的HTML! 这是TinyMCE的错误。

3 个答案:

答案 0 :(得分:1)

任意varchar字符串的直接插入应始终有效:

create table MarkupTable(
  id int identity(1,1) /*please don't berate me for using identity!*/
, markup varchar(max) /* this will use only the space taken by your markup string */
)

insert MarkupTable select '<html><b>demo</b></html>'

select * from MarkupTable

现在 - 问题是:哪一段代码正在编码你的标记???

一些起点:

  • 您是否正确使用C#对象:SqlParameter(SqlDbType.VarChar).Value = yourMarkupString;
  • 你在任何地方使用FOR XML吗?
  • 您使用的是Security.Escape(标记)吗?
  • 您的字符串是作为XmlDocument或SOAP信封的一部分返回的吗? (它将被串行器转义)
  • 你得到一个双重编码的字符串吗?

尝试:

Server.HtmlDecode(Server.HtmlDecode(markupString));

对于空间要求:

  • 您可以通过空格剥离算法运行字符串(任何东西都变成单个空格或制表符。
  • 您可以压缩文本,甚至不存储varchar(max),但varbinary(max)

答案 1 :(得分:0)

请勿使用此数据的“text”数据类型进行捕获。它将从SQL服务器中删除,您不希望以后让自己头疼。

将数据存储在nvarchar(max)数据类型中。

尽量使其尽可能小,剥离不必要的空格可能有助于减小数据的大小。

答案 2 :(得分:0)

您可以执行Server.HtmlEncode并将其保存在数据库的varchar字段中(SQL 2005)。当你转义它时,你可以做一个Server.HtmlDecode并将它加载到标签/文字中,它将正常呈现。