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)。
分享到:
相关推荐
在UTF-8编码中,BOM头通常表示为EF BB BF这三个字节。然而,某些程序或系统可能无法正确处理含有BOM头的UTF-8文件,导致显示问题或者解析错误。 "去BOM头工具"就是针对这种情况设计的,它的主要功能是去除Eclipse中...
BOM头在UTF-8编码中由三个特定的字节序列(EF BB BF)组成,虽然对大多数文本编辑器来说是透明的,但在某些场景下,如JavaScript的JSON.parse()函数解析JSON字符串时,会将BOM视为字符串的一部分,从而导致解析错误...
BOM在UTF-8编码中由三个字节组成:EF BB BF。这个序列告诉解析器文件是以UTF-8编码的。然而,在不需要此信息或不兼容的系统中,BOM可能导致问题。 编写PHP脚本来批量处理这个问题,主要涉及文件读取、内容处理和...
在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。 在utf-8编码文件中BOM在文件头部,占用三个字节,用来...
在PHP中,可以使用`file_get_contents()`函数读取整个文件内容,然后检查前三个字节(在UTF-8中,BOM是EF BB BF)。 5. **Web服务器与浏览器**:脚本通过浏览器执行,意味着它需要在支持PHP的Web服务器上运行,例如...
UTF-8不需要BOM来表明字节顺序,但可以...字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的
描述中提到的“php清楚文件头部bom,以使得清除网站页面顶部的留白与部分乱码”,这是指在PHP文件中,如果含有BOM头,可能会在页面渲染时引起不必要的空行或字符混乱,尤其是当浏览器不期待这个BOM存在时。...
BOM头在文件开头的几个字节是:EF BB BF,对应的十六进制代码为0xEF 0xBB 0xBF。 在PHP编程中,当我们需要提供文件下载服务,并且确保文件以UTF-8编码正确显示给用户时,添加BOM头就显得尤为重要。尤其是当需要下载...
在这个脚本中,`removeBOM`函数首先读取文件内容,然后检查前三个字节是否匹配UTF-8 BOM的字节序列(EF BB BF)。如果存在BOM,它会移除这三字节并更新文件内容。通过遍历文件路径数组,我们可以处理任意数量的文件...
批量去除文件夹下所有文本文件的bom,解决 stray '\357' in program stray '\273' in program stray '\277' in program 的问题。解决网络传输传递BOM头的问题,不再会有EF BB BF字符了。
它读取文件的前三个字节,并利用`ord`函数获取每个字节的ASCII值,然后与UTF-8的BOM头(EF BB BF)进行比较。如果匹配,则进一步处理;如果不匹配,则返回没有BOM头的信息。 4. 如果检测到BOM,根据`$auto`变量的值...
对于UTF-8编码来说,BOM标记为`EF BB BF`。虽然在大多数情况下BOM不会对文本内容造成影响,但在某些特定环境下,如HTML文件,BOM可能会被浏览器误解析为文件的一部分,从而导致页面显示不正常。 #### PHP脚本实现 ...
在UTF-8编码中,BOM的字节序列是EF BB BF,它通常出现在文件的开头。然而,在某些情况下,如在网页或文本编辑器中,BOM可能会引起不必要的问题,比如在不应该有空格或特殊字符的地方出现乱码。因此,开发者有时需要...
1. 文件BOM头的检测与删除方法:通过检查文件的前三个字节是否符合UTF-8 BOM的特征(EF BB BF),来确定是否需要去除BOM头。 2. 文件的读写操作:使用file_get_contents()函数读取文件内容,然后根据需要删除BOM头...
在UTF-8编码中,BOM头表现为字节序列EF BB BF。BOM头在某些文本编辑器或处理软件中自动添加,有时可能会引起编码处理上的问题。 2. 为什么要批量去除BOM头 在进行文件处理或交换时,若对方系统不支持或错误解析BOM...
”EF BB BF” 这三个字节就叫BOM,全称是”Byte Order Mard”。在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。 utf-8文件在php中输出的时候bom是会被输出的,所以要在php中
在UTF-8编码中,BOM的字节序列是EF BB BF。如果文件的编码确实是UTF-8,那么大多数情况下文件开头会包含这些字节。但如果这些字节不被支持的系统所理解,那么它们可能导致解析错误或兼容性问题。 ### PHP处理BOM的...
在UTF-8编码中,BOM由三个字节(EF BB BF)组成,但有时可能会导致问题,比如在某些编辑器中显示乱码,或者影响程序的正确解析。因此,当处理PHP源代码文件时,开发者可能需要移除这些BOM头。 提供的两个PHP代码...
UTF-8的BOM为EF BB BF,这三个十六进制数值分别对应239、187、191这三个十进制数字的字节序列。 ### PHP与BOM的问题 在PHP中处理含有BOM的UTF-8文件时,可能会遇到一些意料之外的行为。当PHP脚本读取或解析含有BOM...