CSS文件添加 @charset "utf-8"; 可能会引起样式在IE6下失效
今天在本地调试好页面在IE6,7,8,及火狐的效果后,上传服务器,上传以后,发现页面在IE7,8,火狐下是正常的,在IE6下串位。
问题发生以后,我在本地又测试了一下IE6的效果,一切正常,可是服务器上的页面缺是不正常,起初怀疑是页面JS和<meta>标签不统一的原因造成的,待我统一了JS和<meta>标签后,问题依然出现。
于是我把服务器上的页面在IE6里另存为下载了下来,下载以后,我突然发现页面的CSS文件的中文注释语句都变成了乱码。这就是页面在IE6下不能正常显示的原因,因为页面的CSS文件由于注释语句变成乱码的原因无法正常读取。
这里我发现了CSS文件与HTML文件的语言编码不统一的问题,HTML文件的语言编码是<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
而CSS文件的语言编码是@charset "utf-8";,这就造成了浏览器在读取CSS文件时,无法读取注释语句的问题。(注意:不是单指注释语句的问题,如果有中文等字符,也会如此。如:font-family: "宋体";)
我之前在网络上见过一个人说,“CSS文件只能设置成UTF-8,而不能设置成GB2312,如果设置成GB2312,会造成错误”,所以我才将CSS的语言设置为 @charset "utf-8";,但是如果这样写出来,而HTML又是GB2312的话,就会造成CSS读取不出来的问题。
所以解决办法是删除@charset "utf-8";这个声明语句,貌似删除以后,CSS的编码依然是UTF-8,但是页面读取会正常。看来,以后在编写CSS文档的时候,还是不添加@charset "utf-8";,这个声明语句比较安全!