`

PHP与BOM头(EF BB BF)

    博客分类:
  • PHP
阅读更多

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):

  1. {BOM头}<?php 
  2.  
  3. ..... 

当file.php被其他文件包含时,由于BOM头在php标签外,会当作输出内容输出到浏览器,然后引发问题(如果用gbk察看  会看到三个乱码的字符)。

 

所以我们在开发过程中,得创建不包含BOM头的UTF8文件,具体见编辑器设置。对于上传文件,用代码截取BOM头即可

  1. if ( substr$data, 0, 3 ) == "\xEF\xBB\xBF" ){ 
  2.  $data=substr_replace( $data'', 0, 3 ) ; 

 

注意:在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。

分享到:
评论

相关推荐

    去bom头工具

    在UTF-8编码中,BOM头通常表示为EF BB BF这三个字节。然而,某些程序或系统可能无法正确处理含有BOM头的UTF-8文件,导致显示问题或者解析错误。 "去BOM头工具"就是针对这种情况设计的,它的主要功能是去除Eclipse中...

    去除所有页面BOM头

    BOM头在UTF-8编码中由三个特定的字节序列(EF BB BF)组成,虽然对大多数文本编辑器来说是透明的,但在某些场景下,如JavaScript的JSON.parse()函数解析JSON字符串时,会将BOM视为字符串的一部分,从而导致解析错误...

    php 批量bom去除工具php代码

    BOM在UTF-8编码中由三个字节组成:EF BB BF。这个序列告诉解析器文件是以UTF-8编码的。然而,在不需要此信息或不兼容的系统中,BOM可能导致问题。 编写PHP脚本来批量处理这个问题,主要涉及文件读取、内容处理和...

    PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法

    在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。 在utf-8编码文件中BOM在文件头部,占用三个字节,用来...

    php查找当前目录下所有带有bom的文件

    在PHP中,可以使用`file_get_contents()`函数读取整个文件内容,然后检查前三个字节(在UTF-8中,BOM是EF BB BF)。 5. **Web服务器与浏览器**:脚本通过浏览器执行,意味着它需要在支持PHP的Web服务器上运行,例如...

    批量去除utf-8的bom头(php版)

    UTF-8不需要BOM来表明字节顺序,但可以...字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的

    bom.rar_BOM

    描述中提到的“php清楚文件头部bom,以使得清除网站页面顶部的留白与部分乱码”,这是指在PHP文件中,如果含有BOM头,可能会在页面渲染时引起不必要的空行或字符混乱,尤其是当浏览器不期待这个BOM存在时。...

    PHP 下载文件时自动添加bom头的方法实例

    BOM头在文件开头的几个字节是:EF BB BF,对应的十六进制代码为0xEF 0xBB 0xBF。 在PHP编程中,当我们需要提供文件下载服务,并且确保文件以UTF-8编码正确显示给用户时,添加BOM头就显得尤为重要。尤其是当需要下载...

    批量去除bom的代码

    在这个脚本中,`removeBOM`函数首先读取文件内容,然后检查前三个字节是否匹配UTF-8 BOM的字节序列(EF BB BF)。如果存在BOM,它会移除这三字节并更新文件内容。通过遍历文件路径数组,我们可以处理任意数量的文件...

    批量去掉BOM工具(php源码)

    批量去除文件夹下所有文本文件的bom,解决 stray '\357' in program stray '\273' in program stray '\277' in program 的问题。解决网络传输传递BOM头的问题,不再会有EF BB BF字符了。

    PHP批量检测并去除文件BOM头代码实例

    它读取文件的前三个字节,并利用`ord`函数获取每个字节的ASCII值,然后与UTF-8的BOM头(EF BB BF)进行比较。如果匹配,则进一步处理;如果不匹配,则返回没有BOM头的信息。 4. 如果检测到BOM,根据`$auto`变量的值...

    解决项目中html去除BOM问题

    对于UTF-8编码来说,BOM标记为`EF BB BF`。虽然在大多数情况下BOM不会对文本内容造成影响,但在某些特定环境下,如HTML文件,BOM可能会被浏览器误解析为文件的一部分,从而导致页面显示不正常。 #### PHP脚本实现 ...

    php去除BOM文档的函数类.zip

    在UTF-8编码中,BOM的字节序列是EF BB BF,它通常出现在文件的开头。然而,在某些情况下,如在网页或文本编辑器中,BOM可能会引起不必要的问题,比如在不应该有空格或特殊字符的地方出现乱码。因此,开发者有时需要...

    PHP批量删除、清除UTF-8文件BOM头的代码实例

    1. 文件BOM头的检测与删除方法:通过检查文件的前三个字节是否符合UTF-8 BOM的特征(EF BB BF),来确定是否需要去除BOM头。 2. 文件的读写操作:使用file_get_contents()函数读取文件内容,然后根据需要删除BOM头...

    PHP批量去除BOM头代码分享

    在UTF-8编码中,BOM头表现为字节序列EF BB BF。BOM头在某些文本编辑器或处理软件中自动添加,有时可能会引起编码处理上的问题。 2. 为什么要批量去除BOM头 在进行文件处理或交换时,若对方系统不支持或错误解析BOM...

    php中隐形字符65279(utf-8的BOM头)问题

     ”EF BB BF” 这三个字节就叫BOM,全称是”Byte Order Mard”。在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。  utf-8文件在php中输出的时候bom是会被输出的,所以要在php中

    用PHP去掉文件头的Unicode签名(BOM)方法

    在UTF-8编码中,BOM的字节序列是EF BB BF。如果文件的编码确实是UTF-8,那么大多数情况下文件开头会包含这些字节。但如果这些字节不被支持的系统所理解,那么它们可能导致解析错误或兼容性问题。 ### PHP处理BOM的...

    批量去除PHP文件中bom的PHP代码

    在UTF-8编码中,BOM由三个字节(EF BB BF)组成,但有时可能会导致问题,比如在某些编辑器中显示乱码,或者影响程序的正确解析。因此,当处理PHP源代码文件时,开发者可能需要移除这些BOM头。 提供的两个PHP代码...

    PHP 中的 Unicode 签名.doc

    UTF-8的BOM为EF BB BF,这三个十六进制数值分别对应239、187、191这三个十进制数字的字节序列。 ### PHP与BOM的问题 在PHP中处理含有BOM的UTF-8文件时,可能会遇到一些意料之外的行为。当PHP脚本读取或解析含有BOM...

Global site tag (gtag.js) - Google Analytics