如何将值插入数据库并保留换行符?

时间:2015-05-20 13:41:48

标签: sql-server vb.net

值是(字面值):

drivers.
CDL license.
Least.

它存储在名为ReturnedText的变量中。

我想更新数据库中的记录并保留换行符。

修改后,页面中似乎显示为:

drivers.  CDL license.  Least

我尝试按HtmlAttributeEncodeHtmlEncode保留格式:

Dim desc As SqlParameter = New SqlParameter("@formatDesc", SqlDbType.NText)
desc.Value = System.Web.HttpUtility.HtmlAttributeEncode(ReturnedText)

Dim Cmd As SqlCommand = New SqlCommand("
                                        update dbo.Positions 
                                        set description = @formatDesc where id = 123456"
                                       ,Conn)

Cmd.Parameters.Add(desc)

Cmd.ExecuteNonQuery()

但是当我在我的页面中显示它时,它会显示:

drivers.  CDL license.  Least

如何使用我在文本可视化工具中看到的格式保存它?

2 个答案:

答案 0 :(得分:2)

关键词在这里(强调我的):

  

但是当我在页面中显示它时,会显示:

这个以及对HtmlEncodeHtmlAttributeEncode()的引用表明您希望在HTML页面中使用此功能。这很重要: HTML会将所有非实体空白视为相同。一个tab是一个回车是一个换行是一个空格是两个空格。所有的浏览器都会在文字之间放置一个空格。如果您在浏览器中查看文档的来源,您将看到保留换行符,而不是由html呈现。

因此,要修复此问题,您必须使用Replace()函数将\n字符替换为<br/>HtmlAttributeEncode()很好地解决了这个问题,但only handles a few specific characters

  

HtmlAttributeEncode方法仅将引号(“),&符号(&amp;)和左尖括号(&lt;)转换为等效的字符实体。

答案 1 :(得分:1)

我不认为HtmlAttributeEncode将为您处理这些换行符。它会做引号,&符号,左括号等。

此外,最好按原样保存数据,并仅在需要时对其进行编码(当您以HTML格式输出时)。有一天,数据可能需要用于其他内容,在报告中使用等。当您输出用于Web使用时,您可以在此时将换行符转换为html。