`

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种方案,笔者亲测管用。具体链接和方案可以参考上篇博客文章哦~

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics