2010-10-05 50 views
11

我有一个包含多个值的长URL。有效的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分隔符?

+0

仅供参考,这是测试一个很好的URL编码/解码工具:http://meyerweb.com/eric/tools/dencoder/ – 2013-06-24 16:49:33

回答

2

那么,根据RFC1738,有效网址可能只包含字母一个 - Ž,加号(+),周期和连字符(-)。

通常我会带着一个加号来分隔您的搜索区域。因此,您的网址将成为http://www.domain.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+ ...

- 编辑 -

由于GinoA指出我误读了文件。因此“$-_.+!*'(),”也是有效的字符。尽管如此,我仍然会选择+符号。

+0

-1。正如GinoA指出的那样,这是不正确的。 – You 2010-10-05 21:18:26

+0

你是对的(或GinoA是)。我编辑了答案。 – 2010-10-06 05:08:04

3

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

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

实施例:search_area=4000+5000+6000

27

Moontear,我想你误读了linked document。该限制仅适用于URL的“方案”部分。在WWW URL的情况下,即“http”。

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

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

我个人使用逗号(,)。然而,加号(+)和破折号( - )都是合理的选项。

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

+0

-1。这应该是一个评论 - SO不是一个论坛! – You 2010-10-05 21:18:58

+2

@你:我不同意downvote。这不仅仅是一个评论,也是一个比我更明确的有效答案。特别是最后两段。 – 2010-10-05 23:12:00

+0

@MainMa:有点真实。如果我是GinoA,我会重申它的意思;就像现在一样,这是一个回复 - 而这些回复属于评论。 – You 2010-10-06 01:20:28

1

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

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

0

我对聚会很迟,但有效的查询字符串可以重复变量,而不是......

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