posts - 5,  comments - 7,  trackbacks - 0

一些字符在 URL 或 XML 文档中使用时有特殊的含义,因此必须针对这些含义对字符做适当编码以使其生效。

字串2

URL 中的特殊字符

 

      在 URL 上执行的查询中,特殊字符被指定为 %xx,其中 xx 是字符的十六进制值。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 http://www.faqs.org/rfcs/rfc1738.html 中的 RFC1738 规范。

字串9


特殊字符

 

字串2

 


特殊含义 字串6

 

十六进制值 字串6

 

+

 

字串8

 

表示空格(在 URL 中不能使用空格)。

 

字串5

 

%2B

 

字串6

 

/

字串7

分隔目录和子目录。

字串7

%2F

 

字串7

 

?

 

字串2

 

分隔实际的 URL 和参数。

字串6

%3F

字串4

%

 

字串4

 

指定特殊字符。

字串2

%25

字串3

#

 

字串1

 

表示书签。

字串6

%23

字串6

&

 

字串3

 

URL 中指定的参数间的分隔符。

 

字串8

 

%26

字串2

字串2

 

 

 

字串4

 

例如,考察下面的查询:

字串6

SELECT *
            
            

字串8
FROM Employees
            
            

字串5
WHERE EmployeeID=?
            
            

字串6

因为 ? 字符在 URL 中有特殊含义(分隔 URL 和传递的参数),所以在 URL 中指定该查询时,该字符被编码为 %3F

 

字串9

 

下列 URL 将执行该查询。在 URL 中传递该参数值。 字串5

http://IISServer/nwind?sql=SELECT * FROM Employees WHERE EmployeeID=%3F FOR 
XML AUTO&root=root&EmployeeID=1

字串8

浏览器将 ? 右侧的所有特殊字符(如 + 字符)都进行转义(即,将 ? 右侧的 + 字符转换成 %20)。

字串1

XML 中的特殊字符

 

>< 这类字符是XML 标记字符,在 XML 中有特殊的含义。当在 SQL 查询(或 XPath 查询)中指定这些字符时,
必须对它们进行适当的编码(也称为实体编码)。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见
XML 1.0 规范 中的 XML 1.0 规范。 字串8

 

特殊字符 字串4

 

特殊含义

 

字串3

 

实体编码

 

字串6

 

>

  

字串9

 

字串9

 

开始标记。

 

字串4

 

&gt;

 

字串4

 

<

  字串6

字串8

 

结束标记。

 

字串4

 

&lt;

字串4

"

 

字串3

 

引号。

 

字串8

 

&quot;

字串4

'

 

字串8

 

撇号。

字串3

&apos;

字串5

&

 

字串3

 

"&"符。

字串8

&amp;

 

字串9

 

字串5

 

 

 

字串3

 

例如,考察下面的查询:

字串9

SELECT   TOP 2 *
            
            

字串4
FROM     [Order Details]
            
            

字串3
WHERE    UnitPrice < 10
            
            

字串9
FOR XML AUTO
            
            

字串5

因为 < 字符在 XML 中有特殊含义,所以当在某模板(一个 XML 文档)中指定该查询时,必须将该字符编码为 &gt;
以下就是含有该查询的模板:

字串9

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
            
            

字串5
   <sql:query>
            
            

字串1
       SELECT top 2 *
            
            

字串6
       FROM      [Order Details]
            
            

字串2
       WHERE      UnitPrice &lt; 10
            
            

字串3
       FOR XML AUTO
            
            

字串5
   </sql:query>
            
            

字串1
</ROOT>
            
            

字串7

URL 编码中的实体编码

字串3

有时可能需要同时指定 URL 编码与实体编码。例如,可在 URL 中直接指定以下模板(而不是指定文件名): 字串9

 

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
            
            

字串9
   <sql:query>
            
            

字串9
       SELECT top 2 *
            
            

字串8
       FROM      [Order Details]
            
            

字串1
       WHERE      UnitPrice &lt; 10
            
            

字串9
       FOR XML AUTO
            
            

字串7

   </sql:query>
            
            

字串9

</ROOT>
            
            

字串1

在此例中,(为 < 标记字符指定的)实体编码 &lt; 内的 & 字符在 URL 中有特殊含义,需要对其进行进一步
编码。必须将 & 字符编码为 %26,否则在 URL 中将把它视为参数分隔符。该 URL 于是被指定为:

字串7

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>
posted on 2008-11-25 08:56 Vincent-chen 阅读(234) 评论(0)  编辑  收藏 所属分类: XML

只有注册用户登录后才能发表评论。


网站导航: