`

BOM介绍

阅读更多

【前言】

   最近遇到BOM问题,这里记录总结下

 

【主体】

(1)介绍

     BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。

    类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

     PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

 

(2)拓展

    隐形字符65279解释如下:

   UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式。

   何谓BOM?

  "EF BB BF" 这三个字节就叫BOM,全称是"Byte Order Mard"。在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。

  utf-8文件在php中输出的时候bom是会被输出的,所以要在php中使用utf-8,必须要是使用不带bom头的utf-8文件。

  常用的文本编辑软件对utf-8文件保存的支持方式并不一样,使用的时候要特别留意

 

(3)解决方法:

      编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。一般的文本文件会忽略这一串隐藏的字符,但对于PHP等文件会解析这一串字符,这样会导致出错。

      1、editplus去BOM头的方法

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

      2、ultraedit去除bom头办法

打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了。

      3、Dreamweaver 去除bom头方法

修改>页面属性>标题/编码  中的     包括Unicode 签名(BOM)"    前面的对钩去掉即可

      4、vscode 去除bom头方法

打开文件,右下角 有个 UTF-8withBom 按钮,说明文件是带Bom头的。  点击按钮后  正上方中间位置有编码选择列表, 选择UTF-8就可以啦。

这里推荐使用第3种方案,笔者亲测管用。具体链接和方案可以参考上篇博客文章哦~

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    关于设计BOM和制造BOM的介绍.doc

    在设计和制造过程中,BOM扮演着非常重要的角色,本文将对设计BOM和制造BOM进行详细的介绍,并结合 CAD、CAPP、PDM、MRPⅡ和ERP等系统进行描述。 一、基本概念 * 产品:是生产企业向用户或市场以商品形式提供的制成...

    bom表详解自行车生产为例介绍bom表的组成,结合erp的说明

    以自行车生产为例介绍bom表的组成,结合erp的说明

    ERP之BOM 知识介绍

    ERP之BOM 知识介绍 TIPTOP培训资料

    BOM说明常见几种BOM

    因此,本文对 BOM 的定义、分类、应用进行了详细的介绍。 一、BOM 的定义 BOM 是一种物料清单,从不同的系统来看,BOM 的含义具有一定的差别。从研发人员来看,BOM 是一种产品结构的技术描述文件,它表明了产品...

    SAP PP BOM批量下载

    本文将详细介绍一个用于SAP PP BOM批量下载的自定义工具。 #### 二、SAP PP BOM基础知识 ##### 1. BOM概述 BOM是制造行业中用来描述产品的组成结构的清单,它不仅包括物料清单,还包括制造这些产品所需的组件、...

    SAP 批量BOM反查

    本文档介绍了一种名为“批量BOM反查”的SAP脚本,该脚本能够实现批量反向查询物料清单的功能。相比传统的CS15事务代码,这种方法可以显著提高工作效率。 #### 关键技术点 ##### 1. 报告结构设计 报告`YPPR0043`不...

    利用allegro导出BOM

    下面我们将详细介绍如何利用Allegro导出BOM。 首先,需要确保在Capture中已经存在要导入Allegro的属性。这些属性可以来自CIS数据库添加的器件,或者手动添加。在Allegro中,需要按照以下步骤进行设置: 1. 正常...

    PP04- BOM主数据介绍

    BOM 主数据介绍 BOM(Bill of Material)是生产或组装等作业的一个完整的、正式的组件结构,通俗来讲 BOM 主要包含的是生产或组装一种产品它需要哪些原材料、半成品、包装材料等物料,以及每种物料的用量等信息。 ...

    PADS LAYOUT生成BOM

    本教程将详细介绍如何使用PADS Layout生成BOM,并探讨其分类详细的特点。 首先,理解BOM的重要性:BOM是电子产品制造的蓝图,它包含了所有组件的清单,确保制造商能够准确无误地购买和装配所需零件。在PADS Layout...

    SAP BOM展开 完整有注释

    #### 一、SAP BOM(Bill of Materials)概念介绍 在SAP系统中,BOM(物料清单)是一种重要的技术文档,它详细记录了一个产品(父项)由哪些零部件(子项)组成,以及这些零部件的数量、单位等信息。在制造业中,BOM...

    工厂维护模块(PM)关键用户第一轮培训-SAP及PM基础介绍.pptx

    SAP 及 PM 基础介绍 ...SAP 及 PM 基础介绍中提到的知识点包括:SAP 介绍、PM 模块介绍、SAP 登陆方式及进入功能界面方法介绍、功能位置介绍、BOM 介绍、PM 模块的架构、PM 模块的主要概念、维护类型和工单类型等。

    oracle BOM学习资料

    在"wan.ppt"这个文件中,可能详细介绍了Oracle BOM的概念、使用方法、实际案例以及操作步骤等内容。通过深入学习并结合实际操作,可以更全面地理解和掌握Oracle BOM的功能和价值。对于IT专业人士来说,熟悉Oracle ...

    C#获取去除文件bom头后的内容

    本文将详细介绍如何使用C#语言来获取并处理去除BOM头后的文件内容。 首先,让我们理解为什么BOM头会导致乱码问题。通常,BOM头是可选的,对于大多数现代文本编辑器和解析器来说,它们能够识别没有BOM头的UTF-8文件...

    U8 BOM全阶查询 sql

    #### 一、U8系统与BOM概念介绍 - **U8系统**:U8是用友软件公司的一款面向中小企业的管理信息系统,涵盖了财务管理、供应链管理、生产制造等多个领域。 - **BOM(Bill of Materials)**:物料清单,是制造行业中...

    SAP 批量导出BOM的代码实现.docx

    本文档介绍了使用ABAP语言编写的批量导出BOM的代码实现,涵盖了物料号、物料描述、基本数量、物料单位、替代BOM、可选文本等功能。该代码使用了SAP系统的相关表和结构,例如STKO、STPO、MAST、MAKT等,来实现批量...

    BOM和DOM对象的简单介绍

    BOM和DOM对象的简单介绍 在 JavaScript 中,BOM( Browser Object Model)和 DOM(Document Object Model)是两个重要的对象模型。BOM 主要关注浏览器窗口和屏幕的信息,而 DOM 则是文档对象的树形结构,从而描述了...

    BOM知识培训

    这次的“BOM知识培训”涵盖了多个关键点,包括BOM的基础知识、产品编码原则、PDM(Product Data Management)系统介绍以及不同行业的编码规则。 1. **BOM基础知识** bom基础知识.doc中详细介绍了BOM的基本结构和...

    BOM准确率的数学模型

    以下介绍几种常见的BOM准确率计算模型: **1. 月度BOM准确率计算公式** \[ \text{月度BOMA} = \sum_{i=1}^{n} K_i \times (1 - \frac{Q_i}{S_i}) \times 100\% \] - \(K_i\):不同类型的BOM根据其重要性分配的...

    java去掉txt文本的bom头信息

    本文将详细介绍如何使用Java去除TXT文本文件的BOM头信息。 首先,我们需要理解BOM头的含义。BOM头是一个字节序列,用于表明文件所使用的字符编码。在UTF-8中,BOM头的字节序是EF BB BF。在UTF-16LE(小端序)中,它...

    C#写入文件加上bom头,主要适用于utf8文件

    下面将详细介绍如何实现这一功能: 1. 首先,我们需要导入`System.IO`命名空间,因为它包含了`StreamWriter`类和其他相关的I/O操作类: ```csharp using System.IO; ``` 2. 创建`StreamWriter`对象时,我们传入一...

Global site tag (gtag.js) - Google Analytics