【问题标题】:How to escape special characters when retrieving data from database?从数据库中检索数据时如何转义特殊字符?
【发布时间】:2010-04-05 15:11:16
【问题描述】:

我将根据SQL Server返回的数据生成XML文件,但是有一些特殊字符,如(可能还有其他类似的字符),会导致XML失败。

有什么办法可以逃脱吗?

谢谢!

【问题讨论】:

    标签: sql-server xml


    【解决方案1】:

    控制字符 U+001C(文件分隔符)和 U+001F(单位分隔符)在 XML 1.0 文档中是非法的,无论是逐字记录还是使用 &#...; 数字字符引用编码。

    它们仅在作为字符引用包含在 XML 1.1 文档中时才被允许。然而,XML 1.1 不像 1.0 那样被广泛接受,而且你不能将 U+0000(null)作为字符引用,所以仍然不可能将任意二进制数据放入 XML 文件中 — 不是这样真是个好主意。

    如果您想在 XML 文件中包含数据字节,您通常应该使用您自己的特殊编码,该编码被您特定类型文档的所有使用者接受。通常使用 base64 来将二进制数据放入 XML。对于不支持任何此类特殊编码方案的格式,您根本无法插入这些控制字符。

    控制字符的用途是什么?

    【讨论】:

      【解决方案2】:

      与您在插入数据库之前转义任何其他用户提供的输入的方式完全相同;可能是其中之一(从最差到最好):

      • 在构造 SQL 语句之前转义控制字符
      • 参数化查询的使用
      • 使用 DAO 或 ORM 将这个问题从您身上抽象出来

      【讨论】:

      • 抱歉,我改了问题。
      【解决方案3】:

      使用参数化查询,您不必担心转义。除非您提及您使用的语言,否则无法真正为您提供更多关于如何使用它们的帮助。

      【讨论】:

      • 抱歉,我改了问题。
      【解决方案4】:

      好吧,我只是使用模式匹配的东西来手动替换那些特殊字符。匹配 '.+?;'

      【讨论】:

        猜你喜欢
        • 2012-10-07
        • 2012-10-04
        • 1970-01-01
        • 2014-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        相关资源
        最近更新 更多