UTF-8 NO BOM & BOM

本文探讨了在修改ECShop时遇到的BOM问题及其对Web应用的影响。详细解释了BOM(Byte Order Mark)的概念,以及如何避免因BOM导致的headers already sent警告。介绍了在不同编辑器中保存UTF-8文件时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





在修改 ECShop 时,可能会遇到 BOM 的问题。

在修改保存后,在浏览器可能会出现:

Warning: Cannot modify header information - headers already sent 。。。


BOM


UTF-8 编码的文件可以分为NO BOM 和 BOM两种格式。

文件使用 UTF8 编码,在保存文件时,要注意 BOM 的问题。

BOM?
QUOTE: UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。

Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是“Byte Order Mark”。


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

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

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

微软的记事本(notepad) Word 等只能正确打开含BOM的UTF8文件,然后UltraEdit却恰恰相反,回把BOM UTF-8文件 误认为 ASCII 编码。

UTF-8的BOM是 "EFBBBF",因为UE载入UTF-8文件会转成Utf16,上述的EFBBBF 在Utf16中是FFFE(Unicode-LE的BOM),UltraEdit不认识BOM又加多一個BOM,所以有2个FFFE。文件就被它破坏了。

Win32 环境中,PHP编辑建议使用 EditPlus, 其余的,比如 notepad2 也可以。

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

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值