为啥我们有两个查询参数的分隔符?

Posted

技术标签:

【中文标题】为啥我们有两个查询参数的分隔符?【英文标题】:Why do we have two delimiters for query parameters?为什么我们有两个查询参数的分隔符? 【发布时间】:2017-11-25 16:46:09 【问题描述】:

我们都知道查询字符串有 2 个分隔符。分别是?&。为什么我们不在这两种情况下都只使用??为什么我们需要&RFC 3986 提供了标准的描述,但没有为我们提供关于该主题的动力。

查询组件由第一个问题表示 标记 ("?") 字符并以数字符号 ("#") 字符结尾 或在 URI 的末尾。

【问题讨论】:

【参考方案1】:

如果您阅读各种 URL 规范,您会发现它没有为 <query> 组件设置任何语法。事实上,客户端和服务器可以就任何受允许/保留字符限制的字符串语法达成一致。

最常用的?<name>=<value>&<name>=<value> 语法来自html 规范。查找为表单参数指定“application/x-www-form-urlencoded”编码方案的 HTML 规范部分(选择任何版本)。

为什么 HTML 规范不使用 & 作为参数分隔符?我认为这是因为 URL 规范说 ?<query> 部分是保留。 (因此,如果 HTML 使用 ? 作为分隔符,则需要进行百分比编码。)

为什么? 保留在<query> 部分?好吧,现在我们正在了解在统一 URL 规范存在之前的 http: 超链接的历史。基本上,我不知道,但它可能与早期的 Web 服务器或浏览器解析超链接的方式有关。

【讨论】:

以上是关于为啥我们有两个查询参数的分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

通过添加分隔符参数化查询

SQL如何查询两个表连接明细表结果用分隔符分开?

无法在本机查询中使用“:”作为分隔符

SQL IN 逗号分隔参数与内部查询

查询带有标题的制表符分隔的文本文件时出现 VBA 错误 - “没有为一个或多个必需参数提供值”

如何在 SQL 的动态查询中使用 Pass 逗号分隔的字符串