Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
posts - 547, comments - 362, trackbacks - 5, articles - 1231
  博客园 :: 首页 :: 新随笔 :: 联系 :: 管理

公告

UTF8/BOM/headers already sent 必看!(转)

Posted on 2007-08-25 17:37 analyzer 阅读(...) 评论(...)  编辑 收藏
当应用程序的文件使用 UTF8 编码时,在保存文件时,一定要注意 BOM 的问题。

什么是 BOM ?

QUOTE:
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。

常用编辑器的设置方法:



查看积分策略说明
附件
2007-4-26 17:28
editplus_utf8_bom.png (58.62 KB)
 
2007-4-26 17:28
emeditor_utf8_bom.png (45.06 KB)
 
2007-4-26 17:28
dreamweaver_utf8_bom.png (36.01 KB)
 


文章转自:FleaPHP论坛
原文地址:http://www.fleaphp.org/bbs/viewthread.php?tid=822&extra=page%3D1
我要啦免费统计