BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。UTF-8实际上包含两种格式:UTF-8 无BOM 类型 与 UTF-8 有BOM 类型。题主刚好使用的是有bom的的类型。事实上在UTF-16 UTF-32中同样分带有BOM及无BOM两种.
BOM实际上是非常有用的前缀。但是在服务器点对点沟通解析或者网页展示中某些情况下却是多余或者说是会带来“麻烦”的。例如会在页头增加如下所示的乱码字符:”“锘?”
1.例如我们把几个JS文件合并成一个文件后,如果文件中间含有BOM字符,就会导致浏览器JS语法错误。
2.PHP就不能识别bom头,PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
我使用editplus编辑器进行转化,具体如下,选文档(Document)菜单——文件编码(File encoding)——批量转换编码(File encoding multiple),选中全部文件后转码,然后再全部保存。
1.要查清自己本身有没有echo 或者exit空格或者换行,
2.一定要保证php文件里<?php ?>标签外没有多余的回车,换行。如果是纯粹的php脚本文件,请删除脚本后面结束标记
3.这些都排查了之后,如果是utf8编码的文件,还会输出一个多余的空格回车。做xml传输时经常死在这多余的空白上面。这是由于BOM文件头造成的。另存为无BOM的文件即可。
原文地址:http://blog.51cto.com/13468761/2088890