2015-05-20 59 views
0

的值是(文字):如何向数据库中插入值并保留换行符?

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

如何将其保存我在文本可视化器中看到的格式?

+0

我没有任何问题插入字符串到SQL与换行符他们似乎总是出来就好了我们可以看到您正在使用的代码插入和读取数据数据库中的字段是什么数据类型 –

+1

你应该停止使用ntext数据类型,它已被弃用,因为它是一个痛苦的处理,你应该使用nv archar(最大值)。 –

回答

2

关键的一句是在这里(重点煤矿):

但是,当我在页面显示出来,它表明:

这,加上HtmlEncodeHtmlAttributeEncode()引用,表明你想要在HTML页面中使用。这非常重要:HTML将所有非实体空格视为相同。一个制表符是一个回车是一个换行是一个空格是两个空格。所有的浏览器都会在文字之间留出空隙。如果您在浏览器中查看文档的源代码,您将看到保留了换行符,并且仅由html提供。

因此,要解决此问题,必须使用Replace()函数来替换\n字符与<br/>HtmlAttributeEncode()是解决这个问题一个很好的尝试,但它only handles a few specific characters

的HtmlAttributeEncode方法转换只引号(“),和号(&)和左尖括号(<)到相应的字符实体

1

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

此外,最好保存数据原样,并且只在需要时(在HTML中输出时)对其进行编码。有一天,数据可能需要其他的东西,在报告中使用,等等。当你输出的网络使用,你可以在这一点上换行符为html。