【发布时间】:2018-07-30 03:49:12
【问题描述】:
我有一个存储在 SQL Server 数据库表列中的字符串,该列当前是 VarChar(Max),但内容是 UTF-16 XML。这是一个示例:
<?xml version="1.0" encoding="utf-16" standalone="yes"?><Content><control name="txtGeneral" value="Hi Bryan,

This is a sample message stored in the database that I need to get out in HTML. I can&amp;#39;t seem to figure out how to get it out into HTML. 

Thanks!

Robot.


-----Original Message-----

Date: 08-21-15 19:57

From: System Test, Microsoft Corp

To: Framework.NET

Subject: RE: RE: RE: RE: 

" /></Content>
存储的原始数据不是 XML/数据类型,但我可以在我的选择中进行转换(见下文)。我通过 .NET/ADO 将其拉出,因此我将其放在本地字符串中,以便在 HTML 中显示。我只需要将它转换为文本框或 HTML 元素,以便它显示在屏幕上。
我可以在 t-sql 中解析我想要的元素 (@value),但这不会对我进行编码更改。这是我的示例查询:
SELECT TOP 1 CONVERT(XML,CONVERT(NVARCHAR(MAX),m.Content)).value('(/Content/control/@value)[1]', 'varchar(max)')
FROM Messages m
WHERE MessageID = 85713;
我可以使用 .NET 或 t-sql 进行转换。我将一次只选择一条消息,因此性能应该不是问题。
这是我想要的样子:
Hi Bryan,
This is a sample message stored in the database that I need to get out in HTML. I can&amp;#39;t seem to figure out how to get it out into HTML.
Thanks!
Robot.
-----Original Message-----
Date: 08-21-15 19:57
From: System Test, Microsoft Corp
To: Framework.NET
Subject: RE: RE: RE: RE:
转换方式:https://r12a.github.io/apps/conversion/
谢谢!
【问题讨论】:
-
文本有html特殊字符所以使用System.Net.WebUtility.HtmlDecode(string);和 System.Net.WebUtility.HtmlEncode(string);
-
XML 声明是虚假的,但您似乎在查询中找到了解决方法。它应该匹配(并且内容也应该匹配)列排序规则。如果正在写入的内容包含列排序规则不支持的字符,则编写器可能会遇到问题(如替换字符、丢弃的字符或异常)。也许需要一份错误报告。
标签: c# .net sql-server xml utf-16