技能Get·BOM头是什么?
阅文时长 | | 0.26分钟 | 字数统计 | | 472.8字符 |
主要内容 | | 1、引言&背景 2、BOM头是什么? 3、如何创建或取消BOM头? 4、如何判断文件是否包含BOM头? 5、声明与参考资料 | ||
『技能Get·BOM头是什么?』 | |||
编写人 | | SCscHero | 编写时间 | | 2021/3/13 PM7:38 |
文章类型 | | 系列 | 完成度 | | 待完善 |
座右铭 | 每一个伟大的事业,都有一个微不足道的开始。 |
一、引言&背景 完成度:100%
a) 研究了什么问题?
- BOM头是什么?
- 如何创建或取消BOM头?
- 如何判断文件是否包含BOM头?
b) 哪些情况需要了解?
- 强化基础知识,基本概念。
- 使用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即可。