22

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

示例 1:

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 分隔符是什么?

4

5 回答 5

43

Moontear,我认为您误读了链接文件。该限制仅适用于 URL 的“方案”部分。对于 WWW URL,即“http”。

该文件的下一部分继续说:

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

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

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

于 2010-10-05T21:14:26.030 回答
13

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

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

- 编辑 -

正如 GinoA 指出的那样,我误读了该文件。因此“ $-_.+!*'(),”也是有效字符。不过,我仍然会使用 + 号。

于 2010-10-05T20:36:33.987 回答
4

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

空间可能是一个不错的选择。它将+在 URL 中转换为字符,因此比字母更具可读性。

例子:search_area=4000+5000+6000

于 2010-10-05T20:33:31.620 回答
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
于 2017-09-29T18:31:03.647 回答
1

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

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

于 2014-08-07T05:07:19.493 回答