值是(字面值):
drivers. CDL license. Least.
它存储在名为ReturnedText
的变量中。
我想更新数据库中的记录并保留换行符。
修改后,页面中似乎显示为:
drivers. CDL license. Least
我尝试按HtmlAttributeEncode
和HtmlEncode
保留格式:
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 :(得分:2)
关键词在这里(强调我的):
但是当我在页面中显示它时,会显示:
这个以及对HtmlEncode
和HtmlAttributeEncode()
的引用表明您希望在HTML页面中使用此功能。这很重要: HTML会将所有非实体空白视为相同。一个tab是一个回车是一个换行是一个空格是两个空格。所有的浏览器都会在文字之间放置一个空格。如果您在浏览器中查看文档的来源,您将看到保留换行符,而不是由html呈现。
因此,要修复此问题,您必须使用Replace()
函数将\n
字符替换为<br/>
。 HtmlAttributeEncode()
很好地解决了这个问题,但only handles a few specific characters:
HtmlAttributeEncode方法仅将引号(“),&符号(&amp;)和左尖括号(&lt;)转换为等效的字符实体。
答案 1 :(得分:1)
我不认为HtmlAttributeEncode将为您处理这些换行符。它会做引号,&符号,左括号等。
此外,最好按原样保存数据,并仅在需要时对其进行编码(当您以HTML格式输出时)。有一天,数据可能需要用于其他内容,在报告中使用等。当您输出用于Web使用时,您可以在此时将换行符转换为html。