BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉弱编辑器(记事本)当前文件采用何种编码,方便编辑器识别。
PHP在设计之初,没有考虑到BOM头的问题,因此很容易因为BOM头引发诡异的问题,比如编码转换失败,样式错乱等等问题,而且此问题相当隐蔽,很难确定发生问题的文件(试想在没有工具的情况下从上万的工程文件中找到哪个文件带有BOM头)。
BOM头是隐藏字符,非编辑字符,就像普通空文件一样,当我们写<?php的时候其实之前已经加了BOM头,如下(file.php):
- {BOM头}<?php
-
- .....
当file.php被其他文件包含时,由于BOM头在php标签外,会当作输出内容输出到浏览器,然后引发问题(如果用gbk察看 会看到三个乱码的字符)。
所以我们在开发过程中,得创建不包含BOM头的UTF8文件,具体见编辑器设置。对于上传文件,用代码截取BOM头即可
- if ( substr( $data, 0, 3 ) == "\xEF\xBB\xBF" ){
- $data=substr_replace( $data, '', 0, 3 ) ;
注意:在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。
分享到:
相关推荐
php 删除bom头工具 获取路径删除bom头
PHP代码删除指定文件夹下所有文件的bom头,用于解决因为文件包含bom头导致的不必要问题。
PHP项目全站代码扫描Bom头清除,防止Bom头存在造成的各种奇葩bug,已存在的Bom头问题也可修复。使用方法:复制文件到站点根目录,浏览器访问“域名/Eliminatebom.php”,等待页面显示的进度完成即可。
什么是BOM头?如何去除文件中的BOM头 删除文件中的BOM头,使文件变成正常的UTF8文件
java处理BOM头的XML,使用记事本编辑会产生BOM头,这样的XML在dom4j处理时会报异常。
什么是BOM头,如何去掉BOM头.zip
批量去除PHP文件bom头 1:支持批量去除晚间bom 2:支持定义目录有选择性的选择去除 3:支持检测bom,而不去除 4:支持php,js,css,html及任意格式文件,可随意定义文件类型
php去除BOM头
在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。 在utf-8编码文件中BOM在文件头部,占用三个字节,用来...
php开发自动清理bom头,防止php代码在windows界面修改了之后,在linux环境下跑不起来的问题。。。php开发自动清理bom头,防止php代码在windows界面修改了之后,在linux环境下跑不起来的问题。。。php开发自动清理bom...
去除eclipse中编码格式为UTF_8(bom)文件的bom头
C#获取去除文件bom头后的内容,可以解决不少乱码问题
UTF-8不需要BOM来表明字节顺序,但可以...字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的
NULL 博文链接:https://mengdejun.iteye.com/blog/790844
bom 头 清除 脚本 清除前请做好备份。 如因清除出现站点无法运行,本人概不负责。
去除文件中的BOM头信息. 一些文档工具可以打开再保存为无bom格式,但文件太多就很费力,此工具类可以直接运行,直接输入你要修改的文件夹路径即可,可自由调整文件夹深度,进行子级文件夹读取
PHP json_encode返回的数据在浏览器中有个小红点。这种情况的原因可能是我们用记事本...我用的是xampp集成环境,首先进入到/opt/lampp/bin/ 然后在bin目录下执行 ./php /opt/lampp/htdocs/项目名/bom.php 回车即可。
代码在项目根目录下面运行一下就OK了,能自动删除并且带bom头的所有php项目文件
C#写入文件加上bom头,主要适用于utf8文件
自动识别有BOM头的文件,批量去除BOM头