Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:

在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

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

Windows就是使用BOM来标记文本文件的编码方式的。

另外unicode网站的FAQ-BOM详细介绍了BOM。官方的自然权威,不过是英文的,看起来比较费劲。

UTF- 8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开 头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可 是,还是有很多软件不能识别BOM。我在研究Firefox的时候就知道,在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。

PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略 UTF-8编码的文件开头BOM的那三个字符。由于必须在<?或者 <?php后面的代码才会作为PHP代码执行,所以这三个字符将会直接输 出。如果遇到header(),session(),cookie()等问题,将会导致乱码或显示白屏等问题.

下面附上editplus去BOM头的方法

EditPlus编辑UTF-8文件时删除BOM方法

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

运行Editplus,点击工具,选择首选项,如下图:

选中文件,UTF-8标识选择 总是删除签名,如下图:

然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了

BOM定义了JavaScript可以进行操作的浏览器的各个功能部件的接口,提供访问文档各个功能部件(如窗口本身、屏幕功能部件、浏览历史记录等)的 途径以及操作方法。遗憾的是,BOM只是JavaScript脚本实现的一部分,没有任何相关的标准,每种浏览器都有自己的BOM实现,这可以说是BOM 的软肋所在。

通常情况下浏览器特定的JavaScript扩展都被看作BOM的一部分,主要包括:

·关闭、移动浏览器及调整浏览器窗口大小;

·弹出新的浏览器窗口;

·提供浏览器详细信息的定位对象;

·提供载入到浏览器窗口的文档详细信息的定位对象;

·提供用户屏幕分辨率详细信息的屏幕对象;

·提供对cookie的支持;

·加入ActiveXObject类扩展BOM,通过JavaScript实例化ActiveX对象。

BOM有一些事实上的标准,如窗口对象、导航对象等,但每种浏览器都为这些对象定义或扩展了属性及方法。

mysql去bom头_使用editplus等编程工具时UTF-8编码去掉BOM头方法相关推荐

  1. php转换编码去掉bom,UTF-8编码怎么去掉BOM头?

    使用uft8编码或做页面的朋友会碰见过把页面保存时会发现页面是空白的但是页面确实有内容,后会会听说是bom头的问题,那么什么是bom头了,要如何解决因为bom头导致页面空白问题呢,下面我们一起来看看具 ...

  2. mysql 避免使用临时表_从日期范围中选择时防止MySQL使用临时表

    我试图阻止mysql在此查询中创建临时表 SELECT `vendor_id`,SUM(`qty`) AS `qty` FROM `inventory_transactions` WHERE `inv ...

  3. java对象头_我的并发编程(二):java对象头以及synchronized升级过程

    一.概述 研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的.本博文针对64位的操作系统来对Ja ...

  4. mysql字段唯一确定_验证表里某不确定的字段的值是否唯一的方法?

    你这个问题是否可以理解为"验证表里的某一不确定的字段的值,没有重复"? 如果是的话,那么你就可以先查出表的总记录数,然后在查出该字段去重之后的总记录数, 对比两次结果,如果数量相同 ...

  5. word无法打开请去应用商店_爱不释手的PPT小工具,请收好

    之前为大家推荐过一些比较实用的PPT及Word编辑技巧 这篇文章主要是为大家推荐一些使用的PPT工具,帮助你拥有更好的体验感,码住! 压缩PPT 可能会有小伙伴遇到一个问题:一个PPT文件好几百兆,该 ...

  6. mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?

    如果表中只有1行,则索引的基数当然应为1.它只是计算唯一值的数量. 如果您将索引视为基于存储桶的查找表(如散列),则基数是存储桶的数量. 以下是它的工作原理:当您在一组列(a,b,c,d)上构建索引时 ...

  7. mysql菜鸟教程面向对象_第一节--面向对象编程

    第一节--面向对象编程 发布时间:2016-06-17 来源: 点击: 次 +------------------------------------------------------------- ...

  8. mysql 合计 小计_用SQL实现统计报表中的小计与合计的方法详解

    本篇文章是对使用SQL实现统计报表中的"小计"与"合计"的方法进行了详细的分析介绍,需要的朋友参考下 客户提出需求,针对某一列分组加上小计,合计汇总.网上找了一 ...

  9. mysql最优库容_一种增加已达到设计库容的尾矿库存储量的方法

    专利名称:一种增加已达到设计库容的尾矿库存储量的方法 技术领域: 本发明属于采矿技术领域,涉及矿山尾矿库扩容领域,具体是指ー种增加已达到设计库容的尾矿库存储量的方法. 背景技术: 从矿石中提取有效成分 ...

最新文章

  1. 51Nod-1082 与7无关的数【进制+打表】
  2. 又叒叕是一篇讲缓存的文章
  3. rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别
  4. hbuilder ios 打包失败,无法导入p12证书的解决方案
  5. Streams那些事之概述与原理
  6. WebService系列之使用Axis获取天气预报数据
  7. 微小宝公众号排行榜_榜单 广东省技工院校微信公众号排行榜(第51期)
  8. Asp.net基础概念之 事件
  9. UDP之sendto错误解决
  10. Typescript学习笔记(五) 模块机制
  11. 风变Python编程13类的学习2
  12. 求交集和并集的线性算法
  13. 最佳材料设计Android应用模板
  14. 2022广东省安全员A证第三批(主要负责人)考试题库及答案
  15. 域渗透|NTLM 中继攻击
  16. mysql使用报错1142(42000)解决方法
  17. 单片机c语言的define,单片机C语言中define的妙用
  18. android开发浅谈之KeyEvent事件处理
  19. 专升本英语 学习笔记
  20. 用Label mx条码打印软件制作吊牌标签

热门文章

  1. Ansible过滤器使用总结
  2. 东方证券的买入评级,旭辉控股背得动吗?
  3. Karp-Rabin算法模板
  4. 二元牛顿迭代法matlab,2-8牛顿迭代法matlab
  5. 入门知识(四)WPF绘图入门到精通。
  6. 计算机专业树立职业理想,计算机专业职业生涯规划书2017字
  7. java bho_COM组件应用(3)——BHO学习
  8. JavaScript学习之ES6 ES2015学记笔记(五)-解构(destructuring)
  9. Qt的alignment、margin属性
  10. XML的SAX解析以及DOM解析和SAX解析区别