PHP:UTF-8 BOM 会导致 HTTP 头的发送

如题,PHP Warning 奇遇记: Cannot modify header information – headers already sent

用 Notepad++ 写 PHP 代码不小心踩中一颗地雷。即使代码看起来是这样


运行起来仍然会产生

Warning: Cannot modify header information - headers already sent by (output started at E:\test.php:1) in E:\test.php on line 2

而不管是用 curl 命令还是浏览器,看到HTTP消息正文都是空的。(PHP/5.3.10, PHP/5.3.29, nginx/1.4.4, Apache/2.2.21, libcurl/7.40.0)


真是怪了。第 1 行真的输出了什么奇怪的东西?在 Notepad++ 显示不可见字符,一无所获。一拍脑袋,用 UltraEdit 十六进制视图观察了一下。前三个字节映入眼帘,

0xEF 0xBB 0xBF

和传说中的“锟斤拷”简直神似……豁然开朗!于是回到 Notepad++,将编码格式由 “UTF-8” 改为 “UTF-8 无 BOM” ,问题排除。

(完)

2 thoughts on “PHP:UTF-8 BOM 会导致 HTTP 头的发送”

发表评论

电子邮件地址不会被公开。 必填项已用*标注