技能Get·BOM头是什么?

阅文时长 | 0.26分钟 字数统计 | 472.8字符
主要内容 | 1、引言&背景 2、BOM头是什么? 3、如何创建或取消BOM头? 4、如何判断文件是否包含BOM头? 5、声明与参考资料
『技能Get·BOM头是什么?』
编写人 | SCscHero 编写时间 | 2021/3/13 PM7:38
文章类型 | 系列 完成度 | 待完善
座右铭 每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 研究了什么问题?

  1. BOM头是什么?
  2. 如何创建或取消BOM头?
  3. 如何判断文件是否包含BOM头?

b) 哪些情况需要了解?

  1. 强化基础知识,基本概念。
  2. 使用PHP等语言没有忽略BOM头的语言。

二、BOM头是什么?   完成度:100%

BOM 是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。在不同的Unicode编码中,对应的bom的二进制字节如下:

EF BB BF UTF-8
FF FE UTF-16 aka UCS-2, little endian
FE FF UTF-16 aka UCS-2, big endian
00 00 FF FE UTF-32 aka UCS-4, little endian
00 00 FE FF UTF-32 aka UCS-4, big-endian

三、如何创建或取消BOM头?   完成度:100%

  • 创建,记事本打开,另存为带BOM的文件。如图,为创建带有BOM的-UTF-8文件。
  • 取消,记事本打开,另存为不带BOM的文件。

四、如何判断文件是否包含BOM头?   完成度:100%

根据BOM头的特性,文件的开头使用的特定的字节进行判断。以下是NodeJS判断BOM头的示例。

    let buf = fs.readFileSync(path);
    if (buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf) {
        buf = buf.slice(3);//若是BOM头,则去除前三个字节。
    }

五、声明与参考资料   完成度:100%

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

posted on 2021-03-13 19:53  SCscHero  阅读(793)  评论(0编辑  收藏  举报

导航