一、什么是BOM

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

二、概念:

  • UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFEUCS中是不存在的字符,所以不应该出现在实际传输中。
  • UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。
  • 如果接收者收到FEFF,就表明这个字节流是大字节序的;如果收到FFFE,就表明这个字节流是小字节序的。因此字符"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编码了。

四、对php的影响

  • PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。
  • 受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),也就是说,凡是不能够在执行之前进行输出的代码都将无效

五、解决方法

在 IDE 编辑器保存时把文件保存为不带BOM的UTF-8文件

UTF-8有BOM和无BOM的区别相关推荐

  1. UTF8有BOM和无BOM

    UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM. 所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提 ...

  2. UTF—8与UTF—8(无bom)格式

    BOM--Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在U ...

  3. php utf8(无bom),php中utf8 与utf-8 与utf8 无BOM

    utf8 与utf-8 相信很多程序员刚开始也会有这样的疑惑,如题,我也是. 其实,他们可以这样来区分. 一.在php和html中设置编码,请尽量统一写成"UTF-8",这才是标准 ...

  4. C#保存文件为无BOM的utf8格式

    如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM ...

  5. Visual Studio 2017 UTF-8 无 BOM 一站式解决办法

    问题背景:最近捡起C++,使用VS 2017平台.因为以前的编程习惯,喜欢使用UTF-8 无 BOM 的编码格式,好让自己的代码全球通用.但是VS 2017 对这个问题不是很友善.但最终找到了解决办法 ...

  6. HTML文本应当存储为UTF-8无BOM格式!

    折腾了一下午的Bug: 一个使用Django模板系统做好的网站,在网页源代码中看不到任何异常,却在浏览器中显示多余的空行, 如上图,图为Chrome中使用开发者工具和查看源代码得到的不同结果. 原来是 ...

  7. Notepad++中的UTF-8无BOM格式编码

    Notepad++中,关于utf-8的编码格式,有两种:以UTF-8无BOM格式编码和以UTF-8格式编码. 很容易给人一种错觉,第一反应会选择以UTF-8格式编码,感觉这种就是平时所说的UTF-8, ...

  8. UTF-8带BOM格式与UTF-8无BOM格式转换

    转自:https://blog.csdn.net/fanyun_01/article/details/78378724 Qt在windows下使用VS建立的工程文件转到Linux环境下编译报出大量错误 ...

  9. 探究无bom头的txt文件在打开时获取编码的方式

    一,测试环境 二,问题提出 三,测试方法 四,测试结论 五,自动猜测的准确性 一,测试环境 系统:WIN10专业版 语言:简体中文 操作系统默认编码:936(ANSI/GBK) 该电脑创建的txt文本 ...

最新文章

  1. 用实例揭示notify()和notifyAll()的本质区别
  2. 动态调用WCF不添加服务(svcutil.exe)
  3. CPU和GPU的区别
  4. void和void*详解 v2
  5. C经典之14-双向链表存储1-10---ShinePans
  6. Python: logging日志模块简单示例
  7. 最优化学习笔记(二)一维搜索
  8. microsoft vbscript编译器错误怎么解决_win7系统ie应用程序错误怎么办 ie应用程序错误解决方法【详解】...
  9. 【BZOJ4242】水壶(克鲁斯卡尔重构树,BFS)
  10. weblogic 12 开启debug端口配置
  11. ubuntu下MySQL的安装使用与卸载-程序编译
  12. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(6)签到题2题
  13. [转载] python日期时间使用详解和定时器使用讲解
  14. c语言谭浩强第五版 第五章习题14 牛顿迭代法求方程根
  15. excel合并两列内容_【238期】EXCEL扩展思维,一题多解,玩转数据两列合并,你都会?...
  16. Android手机应用开发之手机GPS定位
  17. UDF函数:对字符串实现sha256加密,返回64位十六进制字符串
  18. 教你学会u盘重装win10系统,u盘系统盘安装win10
  19. 2022 WordPress Tongleer 仿微博社交主题模板
  20. c罗说什么语言,C罗会说几种语言? 揭金球奖给梅西内马尔当翻译趣事

热门文章

  1. 创建学生类Student,其属性描述包括ID(编号)、Name(姓名)、SClass(班级)、CScore(语文成绩);创建教师类Teacher,其属性描述包括ID(编号)、Name(姓名)、JobT
  2. HTML5期末大作业:红酒主题——简单的品牌红酒销售网页设计(4页) HTML+CSS+JavaScript 期末大作业HTML代码
  3. 【Javascript】javascript 中的指针
  4. 如何把matlab里的字符串按照顺序排列好
  5. fileList.slice(-3)的意思
  6. 框架相关核心要点详解
  7. 【Vue】 错误:Already included file name ‘××ב differs from file name ‘××ב only in casing的解决方法
  8. 优先队列之堆排序(一)
  9. 2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)
  10. c语言git代码注释风格,git代码格式化上传