linux下处理windows utf8文件,发现vim头会多一个<feff>
1. linux vim 中的<feff>
<feff>被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8>里是可选的
linux下删除<feff>: grep -I -r -l $'\xEF\xBB\xBF' file || xargs sed -i 's/\xEF\xBB\xBF//'
2. linux vim 中的^M
在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”
去掉^M
1> dos2unix file
2> sed -i "s=^M==g" file 或者 sed -i "s/\r//"
3> vim打开时候用 :%s/^M//g
4> vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,
3. linux vim 中的<200b>
200b是:Unicode Character 'ZERO WIDTH SPACE' (U+200B)
参见:
http://www.fileformat.info/info/unicode/char/200B/index.htm
处理方法见:
http://superuser.com/questions/207207/how-can-i-delete-u200b-zero-width-space-using-sed
sed 's/\xe2\x80\x8b//g' inputfile