feff 0xef, 0xbb, 0xbf UTF-8

 

问题来源:

inux下处理windows utf8文件,发现vim头会多一个<feff>,从而导致正常的文件解析出错。

一般默认创建的文件都是ANSI编码的。用记事本打开这个文件,点"另存为",最下面有个"编码(Encoding)"可以选择,里面有"ANSI,utf8"等选项。

 

问题知识:

所谓 BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序 (Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space

  <feff>被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,

  在UTF-16、UTF-32编码里它是必需的,而在UTF-8>里是可选的。

问题解决:删除BOM

1.删除方法Vi

#设置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//'
posted @ 2016-04-22 11:01  lily-tiantian  阅读(1493)  评论(0编辑  收藏  举报