什么是有效的URL查询字符串?

时间:2012-11-14 05:29:14

标签: http url query-string querystringparameter

网址查询字符串中允许使用哪些字符?

查询字符串是否必须遵循特定格式?

3 个答案:

答案 0 :(得分:11)

http://tools.ietf.org/html/rfc3986

在2.2保留字符部分中,列出了以下字符:

  

reserved = gen-delims / sub-delims

     

gen-delims =“:”/“/”/“?”/“#”/“[”/“]”/“@”

     

sub-delims =“!”/“$”/“&”/“'”/“(”/“)”/“*”/“+”/“,”/“;”   /“=”

然后规范说:

  

如果URI组件的数据与保留字符冲突   作为分隔符的目的,那么冲突的数据必须是   在URI形成之前进行百分比编码。

接下来,在2.3节中未预留的字符中,列出了以下内容:

  

unreserved = ALPHA / DIGIT /“ - ”/“。”/“_”/“〜”

答案 1 :(得分:11)

维基百科有你的答案:http://en.wikipedia.org/wiki/Query_string

网址编码:某些字符不能是网址的一部分(例如空格),而其他一些字符在网址中具有特殊含义:例如,可以使用字符#进一步指定文档的子部分(或片段); character =用于将名称与值分开。可能需要转换查询字符串以满足这些约束。这可以使用称为URL编码的模式来完成

特别是,对查询字符串进行编码时使用以下规则:

  • 字母(A-Z和a-z),数字(0-9)和字符'。',' - ','〜'和'_'保持原样
  • SPACE编码为'+'或%20 [需要引证]
  • 所有其他字符编码为%FF十六进制表示,其中任何非ASCII字符首先编码为UTF-8(或其他指定编码)

对应于波浪号(​​“〜”)字符的八位字节通常由较旧的URI处理实现编码为“%7E”; “%7E”可以用“〜”代替而不改变其解释。 将SPACE编码为“+”并选择“原样”字符将此编码与RFC 1738区分开来。“

关于格式,查询字符串是名称值对。的?将查询字符串与URL分开。每个名称值对用和号(&)分隔,而名称(键)和值用等号(=)分隔。例如。 http://domain.com?key=value&secondkey=secondvalue

在我提供的维基百科参考中的结构下:

  • 问号用作分隔符,不属于查询字符串。
  • 查询字符串由一系列字段值对
  • 组成
  • 在每对中,字段名称和值用等号“=”分隔。
  • 这对系列由&符分隔,'&' (或分号,';'表示HTML中嵌入的URL,而不是由......生成;见下文)。
  • W3C建议除了和号分隔符[6]之外,所有Web服务器都支持分号分隔符,以允许HTML文档中的URL中的application / x-www-form-urlencoded查询字符串,而无需实体转义&符号。

答案 2 :(得分:1)

此链接包含您需要的答案和格式化值。

https://perishablepress.com/url-character-codes/

为方便起见,这是清单:

<     %3C
>     %3E
#     %23
%     %25
{     %7B
}     %7D
|     %7C
\     %5C
^     %5E
~     %7E
[     %5B
]     %5D
`     %60
;     %3B
/     %2F
?     %3F
:     %3A
@     %40
=     %3D
&     %26
$     %24
+     %2B
"     %22
space     %20