【发布时间】:2013-03-20 18:51:19
【问题描述】:
我遇到了一个问题,该问题是通过我们的 Google 广告词驱动的营销活动揭示的。使用的标准参数之一是“区域”。当用户搜索并点击赞助链接时,Google 会生成一个长 URL 来跟踪点击,并在引荐来源网址中发送一堆内容。我们将其捕获为我们的记录,并且我们注意到“区域”参数不正确。应该是什么
http://ravercats.com/meow?foo=bar®ion=catnip
改为:
http://ravercats.com/meow?foo=bar®ion=catnip
我已验证所有浏览器都会出现这种情况。据我了解HTML entity syntax的定义如下:
&VALUE;
其中前导边界是与号,结束边界是分号。看起来很简单。问题是 ® 实体没有尊重这一点,它在我们的系统中造成了各种破坏。
有人知道为什么会这样吗?它是 DTD 中的错误吗? (我正在寻找当前的 HTML DTD,看看我是否能理解它)我试图找出跨浏览器的共同点来实现这一点,因此我正在寻找 DTD。
这是您可以使用的证明。获取这段代码,用它制作一个 HTML 文件并在浏览器中呈现它:
<html>
<a href="http://foo.com/bar?foo=bar®ion=US®ister=lowpass®_test=fail&trademark=correct">http://foo.com/bar?foo=bar®ion=US®ister=lowpass®_test=fail&trademark=correct</a>
</html>
编辑:对于建议我需要转义整个 URL 的每个人,上面的示例 URL 就是这样,示例。真正的 URL 直接来自 Google,我无法控制它的构造方式。这些建议虽然有效,但并未回答以下问题:“为什么会发生这种情况”。
【问题讨论】:
-
也许尝试将您的 & 替换为
&amp;或 URL 编码的 & 符号%26? -
您未转义的
&首先在 HTML 中是非法的。在那之后尝试对宽松的浏览器进行语言律师有点愚蠢。 (顺便说一句,这在 Firefox 中运行良好;这是 2005 年修复的错误。) -
这些是示例 URL。实际的 URL 直接来自 Google,所以我无法控制它。我很欣赏这些建议,但它没有回答为什么会发生这种情况的问题,特别是针对“reg”实体而不是其他实体。
-
网址来自谷歌还是包含该网址的html是? & 在 url 中非常好,但需要在 html 中编码。
标签: html query-string