UTF-8 编码 include 页面空格

在网站页面使用utf-8 的情况下,有时候被包含(include)的页面上面显示一行空白,而用记事本打开也开不见任何东西,发生这种情况的原因是由于UTF-8 文件的Unicode签名BOM( Byte Order Mark )的问题。

 

BOM(Byte Order Mark ),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8 就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8 编码的。微软做这种检测,但有些软件不做这种检测, 而把它当作正常字符处理。

 

微软在自己的UTF-8 格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8 的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8 文本文件做个这样的标记。

 

也 就是说一个UTF-8 文 件可能有BOM,也可能没有BOM,那么怎么区分呢?三种方法。1,用UltraEdit-32打开文件,切换到十六进制编辑模 式,察看文件头部是否有EF BB BF。2,用Dreamweaver打开,察看页面属性,看“包括Unicode签名BOM”前面是否有个勾。3,用Windows的记事本打开,选择 “另存为”,看文件的默认编码是UTF-8 还是ANSI,如果是ANSI则不带BOM。

 

解决方案是凡是被include的文件都保存为ANSI,主文件可以是UTF-8 。要想把一个文件去掉 BOM,使用UlterEdit打开, 切换到十六进制编辑模式,把最前面三个字节(就是那该死的 EF BB BF)替换为20,保存(注意关闭保存时自动备份的功能),再切换到默认编辑模式,把最前面的三个空格去掉就可以了

 

 

BOM引起的网页布局混乱

 

今天测试网站的时候,发现在本地测试着好好的页面,放到服务器上去测试的时候,首页布局却混乱不已,页面的上部比正常状态下多出一块空白,而且整个页面的布局完全是混乱的。

一开始以为是服务器上文件版比本地的文件版本旧的原因,比对了一番没找到不同的,然后想到会不会是文件编码的问题。

切换到Zend Studio,找到首页的模板文件,属性里一看,编码UTF-8 ,对的,但是下面一行字引起了我的注意,“Byte Order Mark is UTF-8 (BOM)”,于是就想是不是这个玩意引起的布局混乱。

打开EditPlus,设置文件保存选项为一直删除BOM,打开首页模板,保存,上传,测试,没有问题!

看来果然是BOM的问题了,接下来的事就比较机械了,在模板文件里看哪些是带了BOM的,直接到EditPlus里走一遭就行了。

解决了这个问题才想起来,有些模板为了转换成UTF-8 编码的,就用记事本打开文件,然后另存为UTF-8 编码了,但是记事本是会给UTF-8 编码的文件加上BOM的,因此就引起了首页布局的混乱。

嗯,问题解决,就这样。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>