IE下网页不居中的原因【开发手记】
2012/07/06
最近开发wordpress主题的时候,发现网页在IE浏览器下居然不居中,同时导致CSS背景位置移位。但是在非IE核心的浏览器如谷歌、火狐下一切正常。首先想到的是doctype声明,但是查看发现声明没有问题。是什么原因导致的呢?
这个问题我以前也碰到过,于是回忆以前的解决办法。怀疑是编码问题。于是使用editplus打开,另存为发现是utf-8+bom。改为utf-8,保存,诡异的不居中,竟然正常了。
可以这个bom是导致doctype失效的罪魁祸首,于是搜索bom这个东东:
Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记,也就是签名。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。虽然签名有许多好处,但在实际情况中,很多软件是不认这个签名的,比如我们写的java程序,有时编辑保存一下XML文件后,程序就不认它了,主要原因就是因为BOM的原因。
所以,我们选择网页编码的时候一定要选择utf-8,而不是utf-8+bom。实际上,bom会产生一些多余的空格。