看不见的bom

  1. 1. 背景
  2. 2. 看不见的BOM
  3. 3. vim下查看并排除BOM
  4. 4. 后话

背景

旁边的童鞋被QA的bug报告快搞疯了。
原因是,很简单的一个逻辑,parse一个csv,然后对比各个项目,其中,第一个项目是serviceId的flag,如果这个flag不是1,我们把db中对应的flag设置成true。
但是明明这么很简单的一个逻辑,csv中的flag也是1,但是跑了之后db中的flag却不是true。这是为啥?

看不见的BOM

排除其他可能性之后再次观察这个csv,发现出现问题的记录就只有第一条。而这个servideId的flag出现在第一个位置,也就是说?会不会有可能有看不见的字符导致我们parse到的flag并不是1?

经验告诉我们,windows的一些编辑器默认会在文本文件前面插入看不见的BOM字符。

那会不会真的是存在BOM字符呢?

vim下查看并排除BOM

1
2
3
4
:set bomb?

> bomb
> nobomb

因为bom总是出现在文本第一个字符,所以简单的只是显示了是否存在。

当我们想要去除BOM的时候。

1
:set nobomb

即可。

后话

折腾浪费的时间最终就是转换成了经验。
希望以后遇到类似问题反应更快一点吧。

如果你觉得本文对你有帮助,请给我点赞助。