将存储在 MS SQL 服务器中的多行文本框值的换行符转换为 HTML

Convert linebreaks from multiline textbox value stored in MS SQL Server to HTML

好的,我将多行文本框的值存储在 SQL 服务器的 [txt] 列中,类型为 nvarchar(1000)。

本例中的多行文字为:

Dear sir,

Welcome to our platform.

Best, Us

将结果保存到 MSSQL 后,我 运行 查询 select 值。 当我直接从 SQL Server Management Studio 中的查询结果中复制 [txt] 列的值并将其粘贴到 Notepad++ 中时,我又看到了原始文本。 此外,从数据库中再次加载文本并将其分配给多行文本框工作正常。

但是,当我在后面的代码中将数据库列 [txt] 的值分配给字符串变量时(因此不是从文本框到变量):

Dim mailContent as String = row.txt

然后在电子邮件中发送此值,电子邮件收件人看到的文本没有换行符,因此:

Dear sir, Welcome to our platform. Best, Us

我尝试了以下所有不同的场景:

Dim registryTA As New registryTableAdapters.registryTableAdapter
Dim registryDT As registry.registryDataTable = registryTA.GetDataByUserid(_userid)
Dim mailcontent As String

mailcontent = registryDT(0).invitetext.Replace(vbLf, "<br/>").Replace(vbCrLf, "<br/>")

mailContent = mailContent.Replace(Environment.NewLine, "<br/>")
mailContent = mailContent.Replace("\r\n", "<br/>")
mailContent = Server.HTMLEncode(mailContent)
mailContent = Server.HTMLDecode(mailContent)
mailContent = mailContent.Replace(vbCrlf, "<br/>")

最好我不想改变我存储或检索数据的方式in/from MSSQL(如here),那么我如何转换当前值[txt] 到 HTML 格式并获取换行符?

您的文本中似乎只有 \n。也尝试将 \n 替换为 </br>。试试这个,

mailContent = mailContent.Replace(vbLF, "<br/>").Replace(vbCrlf, "<br/>")

替换 SQL select 查询中的换行符

 REPLACE(Account.AcAddress,CHAR(10),'<br/>')