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文件转utf8-bom"这个主题指的是将一批以UTF编码的文件转换为带有BOM(Byte Order Mark)的UTF-8编码。BOM是一个特殊的字节序列,用于标识文件的编码类型,对于UTF-8编码,BOM的字节序列为0xEF, 0xBB, 0xBF。...
在C#编程中,有时我们需要在写入UTF-8文件时添加这个BOM头,以确保其他程序或系统能正确识别文件的编码。 在C#中,我们通常使用`System.IO.StreamWriter`类来写入文本文件。默认情况下,`StreamWriter`创建的UTF-8...
UTF8BOM转换工具
BOM头是UTF-8编码的一个可选部分,用于标识文件的编码方式。它的字节序列是`EF BB BF`,在文件的开头出现。尽管BOM对于某些程序来说是有帮助的,比如识别文件的编码类型,但有时它可能会引起问题。例如,当处理像...
本文将深入探讨几种常见的编码格式,如GB2312、UTF-8以及UTF-8-BOM,并详细讲解如何在C#中进行这些编码格式之间的转换,同时会涉及到与Stream相关的操作。 GB2312,全称为“国标汉字编码字符集”,是中国大陆广泛...
在压缩包子文件的文件名称列表"dimchansky-utfbom-d2133a1"中,我们可以推断出这是`utfbom`项目的一个特定版本或者分支。`dimchansky`可能是作者的名字或项目代号,`d2133a1`可能是一个Git提交哈希,表示这个版本或...
通常,BOM头是可选的,对于大多数现代文本编辑器和解析器来说,它们能够识别没有BOM头的UTF-8文件。但是一些较旧或者设计不完善的程序可能无法处理这个额外的字节序列,从而导致显示异常,如出现乱码、空格或者无法...
当XML文件以UTF-16编码并包含BOM头时,DOM4J在解析过程中可能会遇到问题,因为DOM4J默认并不期望XML文档以这种方式开始。这可能导致解析异常,例如`org.dom4j.DocumentException: Incorrect byte order mark (BOM) ...
在UTF-8编码中,BOM头由三个字节构成:EF BB BF。这些字节序列不表示任何可打印的字符,而是作为文件的元数据,告知阅读器或处理程序文件是以UTF-8编码的。 **BOM头的作用** 1. **标识编码**:BOM的主要作用是帮助...
在UTF-8编码中,BOM头由三个字节组成(0xEF, 0xBB, 0xBF),它并不是必须的,但有时候会被添加到文件的开头来表明该文件是采用UTF-8编码。尽管BOM头对于某些程序来说是有用的,但它可能会引起一些问题,尤其是在处理...
前次一次工程开发,有很多的uft8的php文件,其中有那么几个文件存在有BOM头的文件。老是出错。很烦。在网上找了几个检测清除的工具。都是只支持当前目录的。有些还是php版本的。很不方便。 最后实在受不了,干脆自己...
BOM头虽然对解析UTF-8编码的文本文件至关重要,但在某些情况下,如代码编辑器或版本控制系统中,可能会导致意外的显示问题或者不兼容性。 描述中提到的"批量转换utf-8"意味着这个工具不仅能够去除BOM,还能进行批量...
在实际开发中,有BOM头的UTF-8文件可能会影响代码的正确解析,比如在某些编程语言中,BOM头可能导致文件读取的异常,或者在某些编辑器中,BOM头可能会被误识别为文本的一部分。此外,一些版本控制系统(如Git)在...
`UnicodeInputStream`是一个过滤输入流,它的主要任务是检测并移除文件头中的BOM标志。`UnicodeReader`则是在`BufferedReader`基础上扩展的,用于处理不同类型的Unicode编码,包括那些带有BOM的编码。 在`...
"去BOM头工具"就是针对这种情况设计的,它的主要功能是去除Eclipse中使用UTF-8带BOM编码格式的文件开头的BOM头。Eclipse是一个广泛使用的Java集成开发环境(IDE),它允许开发者配置项目的编码格式。在默认情况下,...
去除bom头小工具,工具使用方法: 选择要遍历的文件夹,输入相应的文件格式,程序会遍历此文件夹下所有相应格式文件,包括子文件夹下的文件删除其BOM头 勾选ANSI转为UTF-8,则会将相应格式但编码为GB2312,GBK,GB...
全自动识别文件编码转换成无bom头的UTF8文件 全自动识别文件编码转换成无bom头的UTF8文件
1.首先介绍一下本人应用场景,qt...3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加删除时可用于文件数量统计。
"对源码自动加上utf8 bom头,并修改换行符为unix换行"这个主题涉及了两个关键点:UTF-8 BOM(Byte Order Mark)和换行符的差异。 首先,UTF-8是一种广泛使用的字符编码标准,它能表示Unicode字符集中的所有字符。...