我在我的网站的<title>中使用了HTML5和UTF-8的“&”符号。谷歌在其serp上显示与号fine,所有浏览器在其标题中也是如此。
http://validator.w3.org给了我这个:
&没有开始字符引用。(&可能应该被转义为&。)
我真的需要做&
我并不在意我的页面为了验证而验证,但我很好奇人们对这个问题的看法,以及它是否重要以及为什么重要。
我在我的网站的<title>中使用了HTML5和UTF-8的“&”符号。谷歌在其serp上显示与号fine,所有浏览器在其标题中也是如此。
http://validator.w3.org给了我这个:
&没有开始字符引用。(&可能应该被转义为&。)
我真的需要做&
我并不在意我的页面为了验证而验证,但我很好奇人们对这个问题的看法,以及它是否重要以及为什么重要。
当前回答
我认为这已经变成了一个“当浏览器不关心时,为什么要遵循规范”的问题。以下是我的概括回答:
标准不是“现在”的东西。它们是“未来”的东西。作为开发人员,如果我们遵循web标准,那么浏览器供应商就更有可能正确地实现这些标准,我们就更接近一个完全可互操作的web,在那里CSS黑客、功能检测和浏览器检测都是不必要的。我们不需要弄清楚为什么我们的布局会在特定的浏览器中中断,或者如何解决这个问题。
具体来说,如果HTML5不需要使用&在您的特定情况下,并且您正在使用HTML5文档类型(并且还期望您的用户使用兼容HTML5的浏览器),那么没有理由这样做。
其他回答
好吧,如果它来自用户输入,那么绝对是,因为显而易见的原因。想想如果这个网站没有这样做:这个问题的标题会显示为:我真的需要将“&”编码为“&”吗?
如果它只是echo '<title>Dolce & Gabbana</title>';严格来说,你不需要这么做。这样会更好,但如果你不这样做,没有用户会注意到区别。
几年前,我们收到一份报告,说我们的一个web应用程序在Firefox中不能正确显示。事实证明,该页面包含一个类似于
<div style="..." ... style="...">
当面对重复的样式属性时,Internet Explorer结合了这两种样式,而Firefox只使用其中一种,因此行为不同。我把标签改成了
<div style="...; ..." ...>
果然,它解决了问题!这个故事的寓意是,浏览器对有效HTML的处理比对无效HTML的处理更一致。所以,现在就修改你该死的加价吧!(或者使用HTML Tidy来修复它。)
是的。正如错误所示,在HTML中,属性是#PCDATA,这意味着它们被解析了。这意味着您可以在属性中使用字符实体。使用&本身是错误的,如果不是因为浏览器宽容,而且这是HTML而不是XHTML,就会破坏解析。转义为&一切都会好起来的。
HTML5允许你不转义它,但只有当后面的数据看起来不像一个有效的字符引用。但是,最好是忽略这个符号的所有实例,而不是担心哪些应该是,哪些不需要是。
记住这一点;如果你没有转义&到&,这对你创建的数据来说已经很糟糕了(代码很可能是无效的),你也可能没有转义标记分隔符,这对用户提交的数据来说是一个巨大的问题,这很可能导致HTML和脚本注入,cookie窃取和其他漏洞。
请转义你的代码。这将在将来为您省去很多麻烦。
你能告诉我们你的头衔是什么吗?当我提交时
<!DOCTYPE html>
<html>
<title>Dolce & Gabbana</title>
<body>
<p>Am I allowed loose & mpersands?</p>
</body>
</html>
到http://validator.w3.org/ -明确要求它使用实验性的HTML 5模式-它没有抱怨&s…
HTML5规则不同于HTML4。在HTML5中它不是必需的——除非&号看起来像一个参数名的开头。"©=2"仍然是一个问题,例如,因为©是版权符号。
然而,在我看来,决定编码或不编码取决于下面的文本是更困难的工作。所以最简单的方法就是一直编码。