关键字:文本文件,开头, 多余的3个字节,EF BB BF,不可见
之所以有关键字,是为了让搜索引擎更好的找到这个文件。
1. 问题的现象:在Ubuntu中,用C语言处理一个纯文本文件,发现在第一行有3个不可见的字符,其十六进制为 EF BB BF,但这一文件在 emacs,vi,nano中显示正常,不会出现任何不可见字符。但用 cat -vET 命令,可以看到开头有如下标识的3个字节:
M-oM-;M-?
2. 这是什么东西:这是BOM(Byte Order Mark),用来区分UTF-8和ANSI编码的一个标记,对于高级一些的程序,例如C#/Java等等,这是完全透明的,但是对于C语言,这是完全不同的。具体参考wikipedia:http://en.wikipedia.org/wiki/Byte_order_mark
3. 处理方法:为了能让C语言处理这些带标记的文本,目前采取的办法是对文本文件进行如下的预处理。
cat test.txt | iconv -f UTF-8 -t ASCII -c > test-asc.txt
经过这一处理之后的文本文件中不再含有BOM文件头。