有一个 Web 应用程序,可以让您粘贴文本并将其保存到数据库。
文本有 €(欧元货币)符号,一旦它到达数据库,它就会在 SQL 中解析 XML 时崩溃。原因是无效字符。
我通过使用 C# 在 Web API 中将 € 替换为 €
解决了这个问题。现在 XML 包含 €
并且它被解析为 SQL。我查看数据库中保存的行,它显示 €。太棒了!
我返回 Web 应用程序并调出已保存的文本。我希望看到“€52.9mm”,但我看到的却是“52.9mm”。
我按下 F12,刷新并看到它确实检索到存储在数据库中的“€52.9mm”。但是 UI 显示“52.9mm”。
为了好玩,我将数据库中的值更改为 € 52.9 毫米
。刷新 UI 现在显示“€52.9mm”。
一个实用的解决方案是将数据库中的文本保存为 € 52.9mm
?
如果这可行,我如何才能将其保存为这种格式(它在 XML 中的格式)?但在它被 SQL 解析后,它被保存为 €52.9mm。
有没有更好的解决方案?
最佳答案
最好的方法是使用 CDATA
将 HTML 包装在 XML 标记元素中。那么您无需担心转义或转换非 xml 安全字符。
现在您还没有显示有关构建此 xml 文件的任何详细信息,但让我们采用标准的 XElement。将内容保存为CDATA
你只需写..
xDocument.Add(new XElement("MyHtml", new XCData("<p>My HTML Content</p>"));
CDATA
CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup. CDATA sections begin with the string
<![CDATA[
and end with the string]]>
关于c# - 编码 xml 并保存到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931220/