有效的 URL 分隔符

问题描述 投票:0回答:5

我有一个包含多个值的长 URL。

例一:

http://www.domain.com/list?seach_type[]=0&search_period[]=1&search_min=3000&search_max=21000&search_area=6855%3B7470%3B7700%3B7730%3B7741%3B7742%3B7752%3B7755%3B7760%3B7770%3B7800%3B7840%3B7850%3B7860%3B7870%3B7884%3B7900%3B7950%3B7960%3B7970%3B7980%3B7990%3B8620%3B8643%3B8800%3B8830%3B8831%3B8832%3B8840%3B8850%3B8860%3B8881%3B9620%3B9631%3B9632

我的变量搜索区域只包含 4 个数字(例如 4000、5000),但可以包含很多。现在,我使用

;
作为分隔符在 URL 中将它们分开。尽管如示例 1 所示,;转换为
%3B
。这让我相信这是一个不好用的符号。

什么是最好的 URL 分隔符?

url separator
5个回答
43
投票

Moontear,我认为您误读了链接文档。该限制仅适用于 URL 的“方案”部分。在 WWW URL 的情况下,就是“http”。

文档下一段接着说:

因此,只有字母数字、特殊字符“$-_.+!*'()”和 可以使用用于保留目的的保留字符 在 URL 中未编码。

我个人会使用逗号 (,)。但是,加号 (+) 和破折号 (-) 也是合理的选择。

顺便说一句,该文件还提到分号(;)在某些方案中被保留。


13
投票

好吧,根据 RFC1738,有效的 URL 只能包含字母 a-z、加号 (+)、句点和连字符 (-)。

通常我会用加号来分隔您的搜索区域。所以你的网址会变成http://www.example.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+...

--编辑--

正如 GinoA 指出的那样,我误读了文档。因此,“

$-_.+!*'(),
”在未编码 URL 中也是有效字符。不过,我仍然会使用 + 号。


5
投票

如果只有数字要分隔,您可以选择多种分隔符。例如,您可以选择任何字母。

或许空间是个不错的选择。它将在 URL 中转换为

+
字符,因此比字母更具可读性。

例子:

search_area=4000+5000+6000


2
投票

我参加派对已经很晚了,但是有效的查询字符串可以重复变量,而不是......

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855+7470+7700

...你也可以使用...

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855&area=7470&area=7700

1
投票

当内容类型为 application/x-www-form-urlencoded(HTML 表单的标准)时,“+”将被解释为空格“”。这可能由您的服务器软件处理。

我更喜欢“!”。它没有对 URL 进行编码(至少在 Chrome 中没有),并且它保留“+”作为典型情况下的真实空格字符。

© www.soinside.com 2019 - 2024. All rights reserved.