我在我的网站的<title>中使用了HTML5和UTF-8的“&”符号。谷歌在其serp上显示与号fine,所有浏览器在其标题中也是如此。

http://validator.w3.org给了我这个:

&没有开始字符引用。(&可能应该被转义为&。)

我真的需要做&

我并不在意我的页面为了验证而验证,但我很好奇人们对这个问题的看法,以及它是否重要以及为什么重要。


当前回答

几年前,我们收到一份报告,说我们的一个web应用程序在Firefox中不能正确显示。事实证明,该页面包含一个类似于

<div style="..." ... style="...">

当面对重复的样式属性时,Internet Explorer结合了这两种样式,而Firefox只使用其中一种,因此行为不同。我把标签改成了

<div style="...; ..." ...>

果然,它解决了问题!这个故事的寓意是,浏览器对有效HTML的处理比对无效HTML的处理更一致。所以,现在就修改你该死的加价吧!(或者使用HTML Tidy来修复它。)

其他回答

好吧,如果它来自用户输入,那么绝对是,因为显而易见的原因。想想如果这个网站没有这样做:这个问题的标题会显示为:我真的需要将“&”编码为“&”吗?

如果它只是echo '<title>Dolce & Gabbana</title>';严格来说,你不需要这么做。这样会更好,但如果你不这样做,没有用户会注意到区别。

你能告诉我们你的头衔是什么吗?当我提交时

<!DOCTYPE html>
<html>
<title>Dolce & Gabbana</title>
<body>
<p>Am I allowed loose & mpersands?</p>
</body>
</html>

到http://validator.w3.org/ -明确要求它使用实验性的HTML 5模式-它没有抱怨&s…

我认为这已经变成了一个“当浏览器不关心时,为什么要遵循规范”的问题。以下是我的概括回答:

标准不是“现在”的东西。它们是“未来”的东西。作为开发人员,如果我们遵循web标准,那么浏览器供应商就更有可能正确地实现这些标准,我们就更接近一个完全可互操作的web,在那里CSS黑客、功能检测和浏览器检测都是不必要的。我们不需要弄清楚为什么我们的布局会在特定的浏览器中中断,或者如何解决这个问题。

具体来说,如果HTML5不需要使用&在您的特定情况下,并且您正在使用HTML5文档类型(并且还期望您的用户使用兼容HTML5的浏览器),那么没有理由这样做。

该链接有一个很好的例子,说明了你何时以及为什么需要转义&到&

https://jsfiddle.net/vh2h7usk/1/

有趣的是,我不得不转义字符,以便在这里的回答中正确地表示它。如果我要使用内置的代码示例选项(来自回答面板),我只需输入&看起来也应该如此。但如果我手动使用<code></code>元素,那么我必须转义,以便正确地表示它:)

这取决于分号在&附近结束的可能性,导致它显示完全不同的内容。

例如,当处理来自用户的输入时(例如,如果在标题标签中包含用户提供的论坛帖子的主题),您永远不知道他们可能会在哪里放置随机分号,并且可能会随机显示奇怪的实体。所以在这种情况下一定要逃避。

当然,对于您自己的静态HTML内容,您可以跳过它,但是包含适当的转义太琐碎了,因此没有理由避免它。