关于urlencode:url的编码之家-urlQueryEscapeencodeURIComponenturlencodeRFC3986
RFC3986首先,理解一下 RFC 3986 规范,简略讲就是规定了如下:除了 数字 + 字母 + -_.~ 不会被本义,其余字符都会被以百分号(%)后跟两位十六进制数 %{hex} 的形式进行本义。 再者,理解下 www 的 post form data 也就是 x-www-form-urlencode 的编码规定:除 -_.(没有 ~) 之外的所有 非字母、非数字 的字符都将被替换成 百分号(%)后跟两位十六进制数 %{hex},空格(留神)则编码为加号 +。 二者的区别如下:1、rfc3986 对 ~ 不做转码,x-www-form-urlencode 对 ~ 做转码 %7E。2、rfc3986 对 空格 转为 %20,x-www-form-urlencode 对 空格 转为 +。 接下来看几个高级语言的 url 编码方式。 js encodeURIComponentphp urlencode/rawurlencodego url.QueryEscapejsencodeURIComponentconsole.log(encodeURIComponent("hello233 ~-_."))hello233%20~-_.能够看到 js 齐全遵循 rfc3986,保留了 ~-_.,空格 被转码为 %20,正规。 phpurlencode<?phpecho urlencode("hello233 ~-_.");hello233+%7E-_.空格 转 +,只保留 -_. 没保留 ~,典型的 x-www-form-urlencode 规定。 ...