用户
 找回密码
 入住 CI 中国社区
搜索
查看: 13423|回复: 9
收起左侧

UTF8/BOM/headers already sent 必看!

[复制链接]
发表于 2008-9-18 23:18:21 | 显示全部楼层 |阅读模式
什么是 BOM ?
UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是 “奎”还是“乙”?Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。

进一步阅读:http://zhidao.baidu.com/question/15626866.html


如果文件保存时,选择了使用 BOM,那么就可能会出现 headers already sent 的问题。
因为 Web 服务器软件可能不认识 BOM,所以就把 BOM 的两个特殊字节当做字符发送给浏览器了。

这时再调用 session_start() 等函数,就会出现 headers already sent 的问题。

所以解决此问题最根本的方法就是在保存 UTF8 编码文件时,不要使用 BOM。

常用编辑器的设置方法:
editplus_utf8_bom.png
emeditor_utf8_bom.png
dreamweaver_utf8_bom.png

评分

参与人数 1威望 +5 收起 理由
Hex + 5 原创内容

查看全部评分

发表于 2008-9-19 00:22:27 | 显示全部楼层
这文章太经典了!加入 FAQ!
发表于 2008-11-18 13:27:24 | 显示全部楼层
我是在utf-8环境下编辑Shift_JIS文件,访问时文件头多出了一个问号,不过去掉bom就正常了,感谢楼主!
发表于 2009-8-5 13:38:08 | 显示全部楼层
非常感谢!
发表于 2009-9-3 16:58:41 | 显示全部楼层
请问一下zend studio 在哪里设置呢?
发表于 2009-12-8 09:12:55 | 显示全部楼层
相当的牛B
发表于 2010-8-18 17:44:04 | 显示全部楼层
zend studio 在那里设置?
发表于 2010-8-27 13:16:30 | 显示全部楼层
同样问题啊。用不同编译器就会出现这个问题。有时候转换以后还会出现
乱码呢!这个问题能不能彻底统一啊。每天都要从新调一下utf-8这个问题啊!
发表于 2011-7-8 11:11:15 | 显示全部楼层
受教了!

本版积分规则