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

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

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

我真的需要做&

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


当前回答

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

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

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

其他回答

是的,如果可能的话,您应该尝试提供有效的代码。

大多数浏览器会无声地纠正这个错误,但是依赖浏览器中的错误处理存在一个问题。对于如何处理不正确的代码没有标准,因此每个浏览器供应商都要尝试找出如何处理每个错误,结果可能会有所不同。

一些浏览器可能会有不同反应的例子是,如果你把元素放在表格中,但在表格单元格之外,或者你把链接嵌套在彼此之间。

对于您的特定示例,它不太可能导致任何问题,但是浏览器中的错误更正可能会导致浏览器从标准兼容模式变为怪癖模式,这可能会使您的布局完全崩溃。

因此,您应该在代码中纠正这样的错误,如果没有其他错误,则可以使验证器中的错误列表保持简短,以便您可以发现更严重的问题。

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

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

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

除了验证之外,编码某些字符对于HTML文档来说是很重要的,这样它才能正确安全地呈现为网页。

编码& as &在任何情况下,对我来说,这是一个更容易遵守的规则,减少了错误和失败的可能性。

比较一下:哪个更容易?哪个更容易搞砸?

方法1

写一些包含&字符的内容。 将它们全部编码。

方法2

(请加一点盐;))

写一些包含&字符的内容。 在具体情况的基础上,查看每个&号。确定:

它是孤立的,因此毫无疑问是一个&号。如。伏特和安培>在这种情况下,就不用费心编码了。 它不是孤立的,但您仍然觉得它是明确的,因为生成的实体不存在,也永远不会存在,因为实体列表永远不会演化。例如,安培和伏特>。在这种情况下,不要费心编码它。 它不是孤立的,也不是模棱两可的。例如,电压和安培>编码。

??

如果&在HTML中使用,那么你应该转义它。

如果&在JavaScript字符串中使用,例如,一个警报('This & that');或文档。你不需要用它。

如果你使用文档。写完之后你就应该使用它,例如:document。写(< p >,< / p >)。

HTML5规则不同于HTML4。在HTML5中它不是必需的——除非&号看起来像一个参数名的开头。"&copy=2"仍然是一个问题,例如,因为&copy;是版权符号。

然而,在我看来,决定编码或不编码取决于下面的文本是更困难的工作。所以最简单的方法就是一直编码。