问题来源:vim
inux下处理windows utf8文件,发现vim头会多一个<feff>,从而致使正常的文件解析出错。windows
通常默认建立的文件都是ANSI编码的。用记事本打开这个文件,点"另存为",最下面有个"编码(Encoding)"能够选择,里面有"ANSI,utf8"等选项。编码
问题知识:spa
所谓 BOM,全称是Byte Order Mark,它是一个Unicode字符,一般出如今文本的开头,用来标识字节序 (Big/Little Endian),除此之外还能够标识编码(UTF-8/16/32),若是出如今文本中间,则解释为zero width no-break space。code
<feff>被称做BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,ip
在UTF-1六、UTF-32编码里它是必需的,而在UTF-8>里是可选的。utf-8
问题解决:删除BOMget
1.删除方法Viit
#设置UTF-8编码
:set fileencoding=utf-8
#添加BOM
:set bomb
#删除BOM
:set nobomb
#查询BOM
:set bomb?
2.检测 BOMB
grep -I -r -l $'\xEF\xBB\xBF' /path
grep -I -r -l $'\xEF\xBB\xBF' file | xargs sed -i 's/\xEF\xBB\xBF//'