甲.BOM说明
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记。这个标记是可选的,UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明当前编码方式。但如果文件本身采用UTF-8来编码,则BOM对文件毫无作用,所以BOM仅为可选项。
乙.对PHP的影响
多数情况下软件会检测到BOM并且忽略,不对BOM做处理。但有些软件不会忽略BOM,反而对BOM做解释,导致字节流处理异常。比如PHP中把它当作正常字符处理,这个时候就会出现解析错误的情况。如下图
错误提示session_start()出现错误,使用notepad++打开源代码,发现代码无问题。
但出现该问题说明session_start()前面肯定存在BOM。按照网上教程调整到UTF-8编码后并未出现EF BB BF字符,原因未知。
丙.解决方法:
1.在编辑工具中调整UTF-8无BOM格式编码保存。
2.将光标移到session_start()前,按下回车然后删除。这样可以删除BOM标识。