bom头的影响

前阵子有同事写了一段代码,在setcookie的时候出现下面错误。

Cannot modify header information – headers already sent by ….

这个错误非常之常见,如果在setcookie之前输出了任何文本内容,便会有上述错误提示。由于页面头部require了若干文件,一行行排查是很麻烦的事情,因此,我在页面顶部加上:

ob_start();

在setcookie之前加上代码:

ob_get_clean();

这是为了获取setcookie之前页面输出的内容。页面运行后,显示输出了一个空字符串,也就是说,setcookie之前没有任何输出。

继而用vim打开了源文件,发觉vim有打开bomb选项,怀疑因此给代码添加了隐藏的字符串,关闭之:

set nobomb

问题解决。

BOM是什么意思?

BOM是“Byte Order Mark”的缩写,用于标记文件的编码。并不是所有的文本编辑工具都能识别BOM标记