编码是一个标准页面所必须的,但有些人不太在意。或者不定义编码,或者混用编码。也许一般情况下不会出问题,但出了问题就很难会注意到和编码有关系。
一位朋友就因为混用编码引发了一个奇怪的问题:样式文件内的部分样式失效,而代码没有任何错误。你没遇见过这样的问题吧?来看看具体是什么情况:
这位朋友的 HTML 文件的编码为 gb2312 ,而 CSS 文件是 utf-8 的,CSS 文件里有一条注释为“/*导航条*/”。这些有问题吗?对!也许他们不同时存在就没问题,但他们存在了就产生了一个奇怪的问题:注释“/*导航条*/”与下一条注释之间的样式在 IE 下没有效果,如果没有下一条注释了,则下面的样式全部没有效果。不光是 IE6 、IE7 ,甚至 IE8 、IE9预览版都没有效果。用 IE 浏览器测试下面的地址试试吧。
从测试页面可以看到有两条样式失效了,分别是:字体红色和下划线。奇怪的是把“导”字或“航”字删掉,样式就起效果了。更奇怪的是“导”字或“航”字他们的总数是基数的时候,如“/*导导航条*”或"/*导导导条*/",是偶数的时候又失效,如“/*导航导航条*/”或“/*导导航航条*/”。
避免问题的方法还有:
最好的办法是统一编码,因为编码不统一,也许还有其他潜在的问题。
如果我们认为这个问题是中文文字引起的,那可能还会有其他文字会引起这样的问题。不过我国的文字有几万个,我们不可能一个一个去试,这只是根据上面情况的一种推测。
Original article: “导”字导致样式失效
©2015 一起CSS. All Rights Reserved.