前言
在自己的记忆中,在开始开发前,得对编辑器进行设置。
- 设置缩进为
tab
或者空格
- 设置缩进长度为
2
或者4
- 设置编码为
UTF-8
- 设置编辑器不添加
BOM
头
但是一直不知道什么是 BOM
头,这次在开发过程中,硬生生的踩了一个坑。
小剧场
小四
:小二
这边为什么会出错呢?明明就没有输出,也没有空格,可是确显示因为代码之前输出了某种奇怪的东西。小二
:啊咧咧?这么惊悚?是不是电脑进贞子了?小四
:ヾ(。`Д´。) 不是吧?怎么办,我怕怕!小二
:嘿嘿,骗你的啦。你看看是不是因为 BOM
的原因?小四
:啊咧咧?什么是 BOM
?小二
:那让我来给你解释解释吧。
概念
字符编码一直是 代码世界
常常会遇到的坑。其中,有个坑的名字就叫做 BOM
(Byte Order Mark,字节顺序标签)。
BOM
用来标识 Unicode编码
是使用 UTF-8
还是 UTF-16
等。它会在文件前添加 三字节
的内容,来标识自己的字符编码。
就好比彩色笔,我们不用看笔上的内容,通过外观的颜色就能判断出这根笔是什么颜色。在解释文件的时候如果看到,BOM
头就能确定这个文件的 Unicode
编码类型。
例如:
# UTF-8 开头会添加 `0xEF 0xBB 0xBF`
那大家可能会问?那这样子有什么错的吗?其实,BOM
也是 Unicode
编码的一部分。在 Window
上对 BOM
处理比较好。但是,在 Unix
上就没有被实现。(了解 shell
的人可能会知道 #!
出现在首行用于表示自动解释脚本。shell
出于兼容的目的,就没有对 BOM
作解释)。
场景
基本上只有 Windows
在支持 BOM
了,所以场景也很固定。
- 在文本编辑器中,字符编码不小心设置成了带
BOM
头。 - 在记事本里编辑代码(应该大多数人不会这么干吧)。
- 用记事本打开文件。
- 同步代码库。
解决方法
Linux 命令行
查找含 BOM
头的文件
grep -r -I -l $'^\xEF\xBB\xBF' ./
删除文件中的 BOM
头
find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;
Windows
使用 editplus
- 运行
Editplus
- 点击
工具
- 选择
首选项
- 选中
文件
- 选择
UTF-8
标识选择,总是删除签名 - 保存文件
总结
其实这个场景是出现在我们产品上线的时候,小伙伴不小心把带有 BOM
头的文件给同步到代码库中了。所以,在多人协作开发下,要 注意
监控和规范,才不会在上线的时候出现问题。
一起成长
在困惑的城市里总少不了并肩同行的 伙伴
让我们一起成长。
- 如果您想让更多人看到文章可以点个
点赞
。 - 如果您想激励小二可以到 Github 给个
小星星
。 - 如果您想与小二更多交流添加微信
m353839115
。
本文原稿来自 PushMeTop
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。