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

Ara*_*and 11 url http query-string querystringparameter

URL查询字符串中允许哪些字符?

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

Ste*_*ven 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 /" - "/"."/"_"/"〜"

  • [RFC 3986 - **第3.4节**](http://tools.ietf.org/html/rfc3986#page-23)专门描述了查询字符串,特别包括子delim和少数其他.总结:`A`-`Z`,`a`-`z`,`0`-`9`,`-`,`.`,`_`,`~`,`!`,`$` ,`&`,`'`,`(`,`)`,`*`,`+`,`,`,`;`,`=`,`:`,`@`,`/`,` ?` (3认同)

Cla*_*wer 11

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

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

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

  • 字母(AZ和az),数字(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查询字符串,而无需实体转义&符号.