打算把明晨网络Mingchennet.com一个PHP工程的编码方式从GB2312改为UTF-8,于是用记事本打开这个ANSI编码方式的文件,在PHP代码设置header的content-type属性,并另存为UTF-8编码方式。结果在浏览器一访问,即警告报错Warning: Cannot modify header information - headers already sent by (output started ...... 重新改为ansi编码,再次访问,一切正常。忽然想起,Header头应该在所有body内容输出之前设置的,于是将header语句放到了紧贴<?php 之后,再次刷新,还是警告! 再次另存为UTF-8模式,在header语句前设置ob_start();先将数据缓冲,在header语句之后再ob_end_flush()发送缓冲区数据。刷新,警告... 很明显,肯定有什么数据在Header语句之前输出了,但是是什么数据呢,在哪里呢? 突然想起,记事本另存为的UTF-8文件,文件头部有个BOM数据,是否就是这个数据在Header前发出了呢?使用Winhex打开这个UTF-8编码的PHP文件,果然,文件头的BOM数据赫赫在目
![]() 删除前三个字节,刷新,一切正常。
注:EditPlus和Dreamweaver可以设置保存为不带BOM的UTF-8文件。具体Google "EditPlus BOM" 和"Dreamweaver BOM"。
(责任编辑:admin) |
