特殊字符 | 特殊含义 | 十六进制值 | + | 表示空格(在 URL 中不能使用空格)。 | %2B | / | 分隔目录和子目录。 | %2F | ? | 分隔实际的 URL 和参数。 | %3F | % | 指定特殊字符。 | %25 | # | 表示书签。 | %23 | & | URL 中指定的参数间的分隔符。 | %26 | 例如,考察下面的查询: SELECT * FROM Employees WHERE EmployeeID=? 因为 ? 字符在 URL 中有特殊含义(分隔 URL 和传递的参数),所以在 URL 中指定该查询时,该字符被编码为 %3F。 下列 URL 将执行该查询。在 URL 中传递该参数值。 http://IISServer/nwind?sql=SELECT * FROM Employees WHERE EmployeeID=%3F FOR
XML AUTO&root=root&EmployeeID=1 浏览器将 ? 右侧的所有特殊字符(如 + 字符)都进行转义(即,将 ? 右侧的 + 字符转换成 %20)。 XML 中的特殊字符 > 和 < 这类字符是XML 标记字符,在 XML 中有特殊的含义。当在 SQL 查询(或 XPath 查询)中指定这些字符时, 必须对它们进行适当的编码(也称为实体编码)。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 XML 1.0 规范 中的 XML 1.0 规范。
特殊字符 | 特殊含义 | 实体编码 | > | 开始标记。 | > | < | 结束标记。 | < | " | 引号。 | " | ' | 撇号。 | ' | & | "&"符。 | & | 例如,考察下面的查询: SELECT TOP 2 * FROM [Order Details] WHERE UnitPrice < 10 FOR XML AUTO 因为 < 字符在 XML 中有特殊含义,所以当在某模板(一个 XML 文档)中指定该查询时,必须将该字符编码为 >。 以下就是含有该查询的模板: <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:query> SELECT top 2 * FROM [Order Details] WHERE UnitPrice < 10 FOR XML AUTO </sql:query> </ROOT> URL 编码中的实体编码 有时可能需要同时指定 URL 编码与实体编码。例如,可在 URL 中直接指定以下模板(而不是指定文件名): <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:query> SELECT top 2 * FROM [Order Details] WHERE UnitPrice < 10 FOR XML AUTO </sql:query> </ROOT> 在此例中,(为 < 标记字符指定的)实体编码 < 内的 & 字符在 URL 中有特殊含义,需要对其进行进一步 编码。必须将 & 字符编码为 %26,否则在 URL 中将把它视为参数分隔符。该 URL 于是被指定为: http://IISServer/nwind?template=<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>SELECT TOP 2 * FROM [Order Details] WHERE UnitPrice %26lt; 10 FOR XML AUTO
</sql:query></ROOT> |