Url XHTML和&;(与符号)编码
我的网站是XHTML过渡兼容的,除了一件事:URL中的&(符号)是按原样编写的,而不是Url XHTML和&;(与符号)编码,url,urlencode,xhtml,Url,Urlencode,Xhtml,我的网站是XHTML过渡兼容的,除了一件事:URL中的&(符号)是按原样编写的,而不是& 也就是说,我的页面中的所有URL通常如下所示: <a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a> <a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a> 及 您可以使用&而不是&在页面的url中 这将允许它通
&代码>
也就是说,我的页面中的所有URL通常如下所示:
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
及
您可以使用&代码>而不是&在页面的url中
这将允许它通过一个严格的xhtml进行验证
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
因此,您需要提供一个将“&”转换为%26的函数
注意:在这种情况下,Server.URLEncode(“neetu&geetu”)将生成neetu+%26+geetu,这不是您想要的,因为您需要将它翻译成%26,而不仅仅是“&”。您必须添加一个应用于URLEncode结果的replace()调用,才能替换“%26amp;”通过“%26”。我刚刚尝试过这个。你试图做的是正确的。在HTML中,如果您正在编写链接,则&
字符应编码为&
如果希望参数值包含与,则只将&
编码为%26
。我刚刚编写了一个简单的HTML页面,其中包含一个链接:
它工作得很好:default2.aspx
收到了预期的参数,并且源代码通过了验证
将&
编码为&代码>在HTML中是必需的,而不是在链接中。当浏览器看到时&
在HTML源代码中,它会将链接解释为一个符号,链接目标将如预期的那样。如果您将URL粘贴到浏览器地址栏中,它不希望它是HTML,也不试图解释它可能包含的任何HTML编码。这就是为什么您建议我们复制/粘贴到浏览器中的示例链接不起作用的原因,也是我们不希望它们起作用的原因
如果您发布更多的实际代码,我们可能会看到您做错了什么,但是您使用&代码>在你的锚标签中。这是我的错:超链接控件已经编码了&,所以我的urlhttp://foo?x=1&y=2
被编码为http://foo?x=1&;y=2
如您所述,通常浏览器会正确处理url中的&。谢谢问题比你想象的还要严重-在Safari中试试吧&;转换为&;散列以URL结尾。正确的答案是不要输出XHTML——没有理由在开发上花费更多的时间和疏远mac用户。更彻底一点:使用&38代码>,一个数字字符引用
因为&代码>是字符实体引用:
字符实体引用是在标记语言中定义的
定义。这意味着,例如,对于HTML,只有特定的
字符范围(由HTML规范定义)可以是
表示为字符实体引用(仅包括
Unicode范围的小子集)
这是来自W3C的智者们(更多信息请阅读)
当然,这不是什么大不了的事,但W3C的建议是,数字的一个在任何地方都是有效和可用的,而命名的一个对HTML来说“很好”,但仅此而已。对不起,我用一个新的答案回答了你,而不是评论。。。如果您想关注帖子,请参阅我的答案(刚刚收到您的评论;)检查此问题使用&;正如其他人已经指出的那样,XHTML文档的URL应该可以正常工作,所以问题可能在其他地方。如果您使用某些服务器端脚本语言生成URL,也许您可以发布其中一些代码,以便其他人可以看到问题是否存在?这在HTML中同样无效。该文档也说明了这一点。命名的URL根据应用的DTD映射到数字引用。自以来&
是所有XML和HTMLDTD都支持的,几乎总是这样。但是,如果没有DTD或“普通”SGML解析,命名的将无法工作,而数字的将无法工作。而且,XML1.0只有五个预定义的命名引用,因此您可以混合使用名称和数字,而不仅仅使用数字。
http://stackoverflow.com/search?q=ff&sort=newest
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
/mypath/mypage?b=%26stuff