url中的分号作为查询字符串的分隔符

时间:2013-02-18 16:35:20

标签: c# asp.net

我一直听说W3C建议使用“;”而不是“&”作为查询字符串分隔符。

  

我们建议使用HTTP服务器实现者,特别是CGI   实现者支持使用“;”取代“&”保存作者   逃避“&”的麻烦这种方式的人物。

有人可以解释为什么“;”建议而不是“&”?

另外,我尝试使用";"代替"&"。 (例如:.com?str1=val1;str2=val2)。阅读为Request.QueryString["str1"]时,我会收到“val1;str2=val2”。因此,如果建议使用";",我们如何阅读查询字符串?

1 个答案:

答案 0 :(得分:2)

正如链接文档所述,建议;优先于&,因为

  

使用“&”用于分隔表单字段的字符与其在SGML属性值中的使用进行交互,以分隔字符实体引用。

例如,假设您希望自己的网址为...?q1=v1&q2=v2

& 那里没有错。但是,如果要将该查询放入HTML属性<a href="...?q1=v1&q2=v2">,则中断,因为在HTML属性中,&表示字符实体的开头。您必须将&作为&amp;转义,并<a href="...?q1=v1&amp;q2=v2">,并且如果您不需要,则会更容易。

;根本不会像这样重载;你可以把一个放在HTML属性中而不用担心它。因此,如果服务器将;识别为查询参数分隔符,则会更加简单。

然而,根据事物的外观(基于您的实验),ASP.Net 不会识别它。怎么去?我不确定你能不能。