XML 和 Internet 支持特殊字符
2004-08-12 20:39
309 查看
XML 和 Internet 支持特殊字符<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一些字符在 URL 或 XML 文档中使用时有特殊的含义,因此必须针对这些含义对字符做适当编码以使其生效。
URL 中的特殊字符
在 URL 上执行的查询中,特殊字符被指定为 %xx,其中 xx 是字符的十六进制值。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 http://www.faqs.org/rfcs/rfc1738.html 中的 RFC1738 规范。
例如,考察下面的查询:
SELECT *
FROM Employees
WHERE EmployeeID=?
因为 ? 字符在 URL 中有特殊含义(分隔 URL 和传递的参数),所以在 URL 中指定该查询时,该字符被编码为 %3F。
下列 URL 将执行该查询。在 URL 中传递该参数值。有关用 HTTP 执行 SQL 语句的更多信息,请参见使用 HTTP 执行 SQL 语句。
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>
有关模板的更多信息,请参见使用模板执行 SQL 查询和使用模板执行 XPath 查询。
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>
请参见
使用 HTTP 访问 SQL Server
使用 FOR XML 检索 XML 文档
使用用于 SQL Server 的 IIS 虚拟目录管理实用工具
一些字符在 URL 或 XML 文档中使用时有特殊的含义,因此必须针对这些含义对字符做适当编码以使其生效。
URL 中的特殊字符
在 URL 上执行的查询中,特殊字符被指定为 %xx,其中 xx 是字符的十六进制值。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 http://www.faqs.org/rfcs/rfc1738.html 中的 RFC1738 规范。
特殊字符 | 特殊含义 | 十六进制值 |
+ | 表示空格(在 URL 中不能使用空格)。 | %2B |
/ | 分隔目录和子目录。 | %<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2F |
? | 分隔实际的 URL 和参数。 | %3F |
% | 指定特殊字符。 | %25 |
# | 表示书签。 | %23 |
& | URL 中指定的参数间的分隔符。 | %26 |
例如,考察下面的查询:
SELECT *
FROM Employees
WHERE EmployeeID=?
因为 ? 字符在 URL 中有特殊含义(分隔 URL 和传递的参数),所以在 URL 中指定该查询时,该字符被编码为 %3F。
下列 URL 将执行该查询。在 URL 中传递该参数值。有关用 HTTP 执行 SQL 语句的更多信息,请参见使用 HTTP 执行 SQL 语句。
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>
有关模板的更多信息,请参见使用模板执行 SQL 查询和使用模板执行 XPath 查询。
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>
请参见
使用 HTTP 访问 SQL Server
使用 FOR XML 检索 XML 文档
使用用于 SQL Server 的 IIS 虚拟目录管理实用工具
相关文章推荐
- 修改tinyxml让其支持解析特殊字符
- XStream解析xml的特殊字符支持
- 修改tinyxml让其支持解析特殊字符
- string.xml中特殊字符
- ANDROID STRINGS.XML的空格特殊字符写法
- xml特殊字符定义
- XML存放特殊字符
- asp生成xml中的特殊字符处理
- Datagridview中控件textbox,支持特殊字符(@.()录入解决办法
- EasyPlayerPro Windows播放器读取xml配置文件中的特殊字符问题
- html和xml传特殊字符的时候需要转义
- 如何在XML 加入特殊字符内容 如< >
- XML特殊字符和空格 换行 转义符
- XML 特殊字符处理
- http请求中对特殊字符的处理,以及xml中对特殊字符的处理
- [转]XML文档中请用实体代替特殊字符
- 处理XML字符串中特殊字符
- XML_E_UNEXPECTED_WHITESPACE错误处理 xml特殊字符
- android string.xml中显示特殊字符
- 【转】XML特殊字符问题