有效的URL分隔符

有效的URL分隔符,url,separator,Url,Separator,我有一个包含多个值的长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%

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

如果只有数字可以分隔,那么您有很多分隔符可供选择。例如,你可以选择任何字母

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

例如:
search\u area=4000+5000+6000

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

一般来说,我会用一个加号来分隔你的搜索区域。所以你的URL会变成

--编辑--


正如吉诺亚指出的,我误读了这份文件。因此“
$-.+!*”(),
”也是有效字符。不过我还是会用+符号。

月亮泪,我想你误读了这个符号。该限制仅适用于URL的“方案”部分。对于WWW URL,这就是“http”

文件的下一节接着说:

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

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

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

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


我更喜欢“!”。它不接受URL编码(至少不在Chrome中),它保留“+”以在典型情况下用作真正的空格字符。

我参加聚会已经很晚了,但有效的查询字符串可以重复变量,因此不需要

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

@你:我不同意否决票。这不仅仅是一个评论,也是一个有效的答案,比我的答案更明确。特别是最后两段。@MainMa:有点正确。如果我是吉诺亚,我会重新措辞;正如现在一样,这是一个回复——这些都属于评论。Chrome在地址栏中转义字符为%27。仅供参考,这是一个很好的URL编码/解码测试工具:只想指出(事实发生4.5年后)Chrome(v70.0.3538.77(官方版本)(至少64位)现在编码
%21
到!百分比编码后变为%21。我认为这个问题不包括任何特定于客户端的机制,而是可能需要在分隔符中进行编码。大多数web框架都是开箱即用,搜索区域元素会自动解析为列表。