phpinclude语句包含文件时,浏览器多出换行-创新互联
今天在做一个项目时候,用include语句包含文件。在云服务器上测试正常,在虚拟主机上总是多了莫名奇妙的换行符或者空格符。问题如下:
经过排查发现问题出现在包含文件的页面编码上:被包含文件的编码是 utf-8+bom编码方式存储。将文件转化成utf-8无bom的编码格式就好;
下面此次问题排查中学习到的东西,总结如下:
1.什么是BOM?
BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。UTF-8实际上包含两种格式:UTF-8 无BOM 类型 与 UTF-8 有BOM 类型。题主刚好使用的是有bom的的类型。事实上在UTF-16 UTF-32中同样分带有BOM及无BOM两种.
2.存在的问题?
BOM实际上是非常有用的前缀。但是在服务器点对点沟通解析或者网页展示中某些情况下却是多余或者说是会带来“麻烦”的。例如会在页头增加如下所示的乱码字符:”“锘?”
1.例如我们把几个JS文件合并成一个文件后,如果文件中间含有BOM字符,就会导致浏览器JS语法错误。
2.PHP就不能识别bom头,PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
3文件编码转化方法
我使用editplus编辑器进行转化,具体如下,选文档(Document)菜单——文件编码(File encoding)——批量转换编码(File encoding multiple),选中全部文件后转码,然后再全部保存。
扩充-解决php输出时出现多余的空格或者换行
1.要查清自己本身有没有echo 或者exit空格或者换行,
2.一定要保证php文件里标签外没有多余的回车,换行。如果是纯粹的php脚本文件,请删除脚本后面结束标记
3.这些都排查了之后,如果是utf8编码的文件,还会输出一个多余的空格回车。做xml传输时经常死在这多余的空白上面。这是由于BOM文件头造成的。另存为无BOM的文件即可。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站标题:phpinclude语句包含文件时,浏览器多出换行-创新互联
转载来源:http://ybzwz.com/article/ccdpod.html