首页 > *nix技术, Shell命令 > 批量删除UTF-8编码中BOM字符

批量删除UTF-8编码中BOM字符

2012年3月1日 发表评论 阅读评论 4,766 次浏览

在Linux下编译一个同事打包过来的C项目工程,编译步骤很简单,只有一步:make,问题是报错一堆错:

...
gcc  -fno-strict-aliasing -DNDEBUG -DSF_LIBEAL_USE_HPET -O2 -DSF_LITTLE_ENDIAN  -W -Wall  -Wno-pointer-sign -Wno-unused-parameter  -I... -MD -c -o obj/xxx.c
In file included from /.../xxx.h:17,
                 from /.../xxx.h:5,
                 from xxx.c:34:
/.../xxx.h:1: error: stray '\357' in program
/.../xxx.h:1: error: stray '\273' in program
/.../xxx.h:1: error: stray '\277' in program
make[2]: *** [obj/xxx.o] Error 1
make[2]: Leaving directory `/.../xxx'
make[2]: Leaving directory `/.../xxx'
gcc  -fno-strict-aliasing -DNDEBUG -DSF_LIBEAL_USE_HPET -O2 -DSF_LITTLE_ENDIAN  -W -Wall  -Wno-pointer-sign -Wno-unused-parameter  -I... -MD -c -o obj/xxx.c
In file included from /.../xxx.h:17,
                 from /.../xxx.h:5,
                 from xxx.c:34:
/.../xxx.h:1: error: stray '\357' in program
/.../xxx.h:1: error: stray '\273' in program
/.../xxx.h:1: error: stray '\277' in program
make[2]: *** [obj/xxx.o] Error 1
make[2]: Leaving directory `/.../xxx'
make[2]: Leaving directory `/.../xxx'
...

这是什么错误?这是UTF-8编码中BOM字符引起的gcc编译出错,BOM(Byte Order Mark)是Windows下的东东,Linux下根本就不需要它,那直接批量去掉吧:

[root@localhost xxx]# grep -rIlo $'^\xEF\xBB\xBF' . | xargs sed --in-place -e 's/\xef\xbb\xbf//'

温馨提示:批量删除有风险,使用请提前备份。

转载请保留地址:http://www.lenky.info/archives/2012/03/1208http://lenky.info/?p=1208


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.