Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url XHTML和&;(与符号)编码_Url_Urlencode_Xhtml - Fatal编程技术网

Url XHTML和&;(与符号)编码

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&amp;y=2">Foo</a> 及 您可以使用&而不是&在页面的url中 这将允许它通

我的网站是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&amp;y=2">Foo</a>


您可以使用
&而不是&在页面的url中

这将允许它通过一个严格的xhtml进行验证

<a href="http://www.foo.com/page.aspx?x=1&amp;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编码。这就是为什么您建议我们复制/粘贴到浏览器中的示例链接不起作用的原因,也是我们不希望它们起作用的原因


如果您发布更多的实际代码,我们可能会看到您做错了什么,但是您使用
&在你的锚标签中。

这是我的错:超链接控件已经编码了&,所以我的url
http://foo?x=1&y=2
被编码为
http://foo?x=1&amp;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&amp;sort=newest
<a href="http://www.foo.com/page.aspx?x=1&amp;y=2">Foo</a>
/mypath/mypage?b=%26stuff