回车既适用于HTML也适用于文本

时间:2011-10-11 13:55:29

标签: html sql sql-server-2008 email text

我正在研究一些将数据转储到表中的代码。

部分数据包括回车。

最终,数据将导出为HTML格式的电子邮件或文本文件(CSV),或两者。我事先不知道将对此数据使用哪种导出方法。

如果我写回车,请按以下方式返回数据库:

UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + CHAR(13) + CHAR(10) + @LineTwo
WHERE ID = @IDValue

然后它在CSV文件中运行得很好,但HTML电子邮件完全搞砸了 - 它会混淆编码并显示带有标题和mime信息的电子邮件,除了调试之外完全没用。

另一方面,如果我把我的回车写回数据库,就像这样:

UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + '<br>' + @LineTwo
WHERE ID = @IDValue

然后是另一种方式 - 它适用于电子邮件,但文本文件输出时文本中嵌入了实际的“br”,如“LineOne&lt; br&gt; LineTwo”。

有没有办法以某种方式表示回车,这种方式会在HTML中两个纯文本中产生相同的结果?

所有这些都是在T-SQL存储过程内部在SQL Server 2008上运行的。

3 个答案:

答案 0 :(得分:4)

我认为最合适的方法是存储所有文字&#34; as-is&#34;使用CR LF,然后在从表中获取数据时进行适当的操作,即。如果要渲染html等,则将换行符转换为

答案 1 :(得分:3)

这是其中一个没有简单回答的时间。正如您在此处所看到的,HTML和纯文本的解释方式截然不同。换行符在两者中都是不同的,而在另一行中则不相容。

您需要做的是将逻辑分成不同的存储过程:一个用于HTML /电子邮件格式化,一个用于纯文本/ csv格式化。

答案 2 :(得分:0)

我不确定您使用哪种语言发送电子邮件。如果它是PHP,您可以使用普通文本和回车符,并使用以下命令将它们转换为html-linebreaks:

nl2br($text);