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