url中允许哪些符号?

我知道任何符号都可以通过转义来传递,但我想知道哪些是常规情况下就可以使用的。 我做的是多条件筛选,所以需要将一个多维数组序列化之后放在url里,所以需…
关注者
33
被浏览
155,312

4 个回答

不要自己去搞一套转义或是序列化的方法。

用现成的应用最广的 JSON,然后直接

urlencode

encodeURIComponent

)。

这样比起自己转义,后续维护起来容易,通用性强。这种接口的事情上没有必要自己重新造轮子。

URL的特殊字符

当几种特定的字符集合出现在URL中时,你必须特别注意:

>>> 首先,在URL中有特殊意义的字符,也就是保留字符:

; / ? : @ & = + $ , {10个}

这意味着,这些字符通常在URL中使用时,是有特殊含义的(如 ":"把每一个部分分隔开来),

如果一个URL的某一部分(如查询参数的一部分)可能包含这些字符之一,则应该在放入URL之前

对其进行转义处理.

>>> 第二组需要注意的字符集是非保留字符集.如下:

- _ . ! ~ * ' ( ) {9个}

这些字符可以被用于URL的任何位置(有些地方,不允许它们出现).

使用它们作为URL的一部分时,你不需要进行编码/转义处理.你可以对它们进行转义操作且不影响URL

的语义,但不建议这么做.

>>> 第三组 不推荐字符 也就是避用字符集合

使用它们是不明智的:

{ } | \ ^ [ ] `::数字1键前:: {8个}

不明智的原因:网关有时会修改这样的字符,或者将其作为分隔符使用.这并

不意味着网关总会修改这些字符,但这种情况可能发生.

如果真是要使用这些字符,请做转义处理.

>>> 第四组 例外字符集

这组字符集是所有的ASCII控制字符组成.包含空格字符以下列字符:

< > # % " {5 个}

控制字符是不可打印的US-ASCII字符(十六进制00~1F及7F)

如果使用,请转义处理.有些字符#(哈希)和%(百分比)在URL上下文中有着特殊含义,你

可以把它们当作保留字符对待.这个集合中的其它字符无法被打印,因此对它们进行

转义是唯一的表示方式, < > " 这三个字符需要被转义,因为这些字符通常用来

在文本中分隔URL

转载自:

doiob.blog.163.com/blog