zoukankan      html  css  js  c++  java
  • URL 或 XML 文档中的特殊字符

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

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

    特殊字符


    特殊含义

    十六进制值

    +

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

    %2B

    /

    分隔目录和子目录。

    % 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 规范。

    特殊字符

    特殊含义

    实体编码

    >

    开始标记。

    &gt;

    <

    结束标记。

    &lt;

    "

    引号。

    &quot;

    '

    撇号。

    &apos;

    &

    "&"符。

    &amp;

    例如,考察下面的查询:
    SELECT TOP 2 * FROM [Order Details] WHERE UnitPrice < 10 FOR XML AUTO
    因为 < 字符在 XML 中有特殊含义,所以当在某模板(一个 XML 文档)中指定该查询时,必须将该字符编码为 &gt;。以下就是含有该查询的模板: <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:query>
    SELECT top 2 * FROM [Order Details] WHERE UnitPrice &lt; 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 &lt; 10
          FOR XML AUTO
       </sql:query>
    </ROOT>
    在此例中,(为 < 标记字符指定的)实体编码 &lt; 内的 & 字符在 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>

  • 相关阅读:
    Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
    分布式架构2:Nginx下Session存储
    分布式架构3:MySQL集群(Mysql Cluster7.5.5)
    分布式架构1:Nginx实现负载均衡
    Oracle 触发器记录
    [Deprecation Notice] 本博客弃用, 迁移至新博客
    KM算法 O(n^3)最大权完美匹配
    Python 学习笔记(附 Pytorch)
    你一定看的懂的:vlan与交换机端口的三种模式access,trunk和hybrid
    Git代码回滚
  • 原文地址:https://www.cnblogs.com/shf/p/430735.html
Copyright © 2011-2022 走看看