我正在使用 ' &
' 在我网站的 <title>
中带有 HTML5 和 UTF-8 的符号. Google 在其 SERPs 上显示 & 号罚款,就像标题中的所有浏览器一样。
http://validator.w3.org给我这个:
& did not start a character reference. (& probably should have been escaped as
&
.)
我真的需要做&
?
我不会为了验证而对我的页面进行验证,但我很想听听人们对此的看法,以及它是否重要以及为什么重要。
最佳答案
是的。正如错误所说,在 HTML 中,属性是 #PCDATA 表示它们已被解析。这意味着您可以在属性中使用字符实体。单独使用 &
是错误的,如果不是针对宽松的浏览器以及这是 HTML 而不是 XHTML 的事实,将会破坏解析。只需将其转义为 &
一切都会好起来的。
HTML5 允许您不转义,但仅当后面的数据看起来不像是有效的字符引用时。但是,最好只转义此符号的所有实例,而不是担心哪些应该是,哪些不需要。
记住这一点;如果您没有将 & 转义为 &,那么对于您创建的数据(代码很可能无效)已经够糟糕了,您也可能没有转义标签分隔符,这对于用户提交的数据来说是一个大问题,这很可能导致 HTML 和脚本注入(inject)、cookie 窃取和其他漏洞。
请转义您的代码。以后可以省去很多麻烦。
关于validation - 我真的需要将 '&' 编码为 '&' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493405/