如何从数据库中检索数据时转义特殊字符?

时间:2010-04-05 15:11:17

标签: sql-server xml

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

有没有办法逃脱它们?

谢谢!

4 个答案:

答案 0 :(得分:5)

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

仅当包含为字符引用时,才允许在XML 1.1文档中使用它们。但是,XML 1.1并不像1.0那样被广泛接受,并且即使作为字符引用也不能使用U + 0000(null),因此仍然无法将任意二进制数据放入XML文件中 - 而不是它永远是个好主意。

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

控制字符的用途是什么?

答案 1 :(得分:1)

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

  • 在构造SQL语句之前转义控制字符
  • 使用参数化查询
  • 使用DAO或ORM将此问题从您身上移除

答案 2 :(得分:0)

使用参数化查询,您不必担心转义。除非你提到你正在使用哪种语言,否则无法真正为你提供更多的帮助。

答案 3 :(得分:0)

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