前言
在自己的记忆中,在开始开发前,得对编辑器进行设置。
- 设置缩进为
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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。