【问题标题】:Encoding xml and saving to SQL Server编码 xml 并保存到 SQL Server
【发布时间】:2015-04-28 22:41:45
【问题描述】:

拥有一个可以让您粘贴文本并将其保存到数据库的 Web 应用程序。

文本有€(欧元货币)符号,一旦它到达数据库,它在用 SQL 解析 XML 时崩溃。原因是无效字符。

我通过在 Web API 中使用 C# 将 € 替换为 € 解决了这个问题。现在 XML 包含 € 并被解析为 SQL。我查看数据库中保存的行,它显示€。太好了!

我返回 Web 应用程序并调出已保存的文本。我希望看到“€52.9mm”,但我看到的是“52.9mm”。

我按 F12,刷新并看到它确实检索到“€52.9mm”,这是存储在数据库中的内容。但 UI 显示“52.9mm”。

为了好玩,我将数据库中的值更改为€ 52.9mm。刷新 UI 现在显示“52.9 毫米”。

将数据库中的文本保存为€ 52.9mm 是否可行?

如果这可行,我如何让它以 XML 中的这种格式保存?但是在被 SQL 解析之后,它被保存为 €52.9mm。

有没有更好的解决方案?

【问题讨论】:

  • 仅供参考,如果您想从字面上引用某些内容,` 字符是您的朋友。
  • @spender,最初,我使用了双引号,但它不起作用。根据您的提示,我尝试了单引号,但这也不起作用。我复制了你的 char 并使用了它,它可以工作。那是键盘左上角的字符(1 的左边)吗?
  • 是的,在我的 EN-GB 键盘上。其他地方可能不一样。或者,突出显示文本并在编辑器中按{} 按钮。

标签: c# sql-server xml encoding


【解决方案1】:

最好的方法是使用CDATA 将您的 HTML 包装在您的 XML 标记元素中。那你就不用担心转义或转换非xml安全字符了。

现在你还没有展示任何关于构造这个 xml 文件的细节,但是让我们来看看一个标准的 XElement。要将内容保存为CDATA,您只需编写..

xDocument.Add(new XElement("MyHtml", new XCData("<p>My HTML Content</p>"));

CDATA

CDATA 段可以出现在任何可能出现字符数据的地方;他们是 用于转义包含字符的文本块 否则被视为标记。 CDATA 部分以 字符串<![CDATA[并以字符串]]>结尾

http://www.w3.org/TR/REC-xml/#sec-cdata-sect

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多