【问题标题】:What's the de facto practice on ampersand encoding in HTML?HTML 中与符号编码的实际做法是什么?
【发布时间】:2021-11-10 11:08:09
【问题描述】:

根据 HTML 规范,& 符号应编码为

&

当然,网络上的很多东西并没有做到这一点。以下是来自 Amazon.com 的广告小部件示例:

<iframe
    src="http://rcm.amazon.com/e/cm?t=xyzxyz-20&o=1&p=11&l=ur1&category=textbooks&banner=17P1AE8RQ1T7ZFC62V82&f=ifr"
    width="120"
    height="600"
    scrolling="no"
    border="0"
    marginwidth="0"
    style="border:none;"
    frameborder="0">
</iframe>

请注意,与号未编码。

对于那些经常使用商业网站、在公司工作或使用许多小部件代码的人,这些网站中的大多数是否真的对 & 符号进行了编码?

(换句话说,有多少百分比的前 1k 网站尝试正确编码位于 URL 中的 & 符号?)

压力:这与是否应该编码无关。我只想问那些在公司工作的人:如果你见过很多基于CGI的URL,其中有一个&符号,并且这个URL在一个HTML页面中,根据你的经验,它们是编码的吗?

【问题讨论】:

  • @Phrogz:不是重复的,XHTML 和 HTML 有非常不同的要求。 (在这种特殊情况下,当然不会,但不关心 XHTML 的人不会过多关注其他问题。)
  • 我几乎没有做任何研究。去谷歌和必应。搜索一些产品,点击购物搜索。然后看看他们的html源代码。据我所知,bing 坚持使用 &,但谷歌并非总是如此,但主要是。

标签: html


【解决方案1】:

应该始终进行编码 - 编码为 &amp;amp; 或 &amp;#38;

但是,浏览器的解析器非常宽容:-)

【讨论】:

  • 浏览器解析的允许性不应成为创建无效内容的借口。我个人见过带有&lt;a href="foo?bar=42&amp;registered=true"&gt; 之类的网址的案例,其中浏览器“有用地”将其解释为&lt;a href="foo?bar=42®istered=true"&gt;。它必须始终被编码。其他任何事情都是自找麻烦。
  • @mu 太短:我不同意。 & 符号得到很好的支持和事实上的标准 url 机制。为什么要改用分号?因为你的懒惰? URL 通常是通过模板助手生成的,模板助手会为您处理编码。
  • @mu 太短:它更具可读性 - 你是对的。但我不会手动编写 URL(带参数)——系统会为我生成它们,在这种情况下,兼容性是唯一重要的事情。
【解决方案2】:

我的个人经历:

最常见的用法是完全不练习;只需将其放入代码中,看看它是否在他们碰巧安装的浏览器中工作。

更有经验的开发人员至少会在几个不同的浏览器中检查它。

那些足够关心健壮性的人会验证代码并正确编码字符(这也意味着在 URL 中编码字符)。

【讨论】:

  • @Phrogz:好点。我澄清说这是我的个人经历。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2011-03-11
  • 2010-11-26
  • 2015-06-23
  • 2017-12-26
  • 2016-10-19
  • 1970-01-01
相关资源
最近更新 更多