显示在文件中的<0xEF,0xBB,0xBF>字符。 如何删除它们?

我在做压缩的JavaScript文件,压缩机抱怨我的文件中有字符。

我如何search这些字符并将其删除?

 perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js 

如果你的文件中有其他的utf-8文件,我会认为这个工具会中断,但是如果没有,这个解决方法可能会对你有帮助。 (未经testing…)

编辑 :添加-CSD选项,根据tchrist的评论。

您可以使用vim轻松删除它们,步骤如下:

1)在您的terminal中,使用vim打开文件:

 vim file_name 

2)删除所有BOM字符:

 :set nobomb 

3)保存文件:

 :wq 

另一种删除这些字符的方法 – 使用Vim

vim -b文件名

现在这些“隐藏”的字符是可见的( <feff> ),可以删除。

感谢以前的答案,这里是一个sed(1)变种,以防万一:

 sed '1s/^\xEF\xBB\xBF//' 

在Unix / Linux上:

 sed 's/\xEF\xBB\xBF//' < inputfile > outputfile 

在MacOSX上

 sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile 

注意mac之后的$ sed。

在Windows上

Super Sed有sed的增强版。 对于Windows,这是一个独立的.exe,旨在从命令行运行。

使用尾巴可能会更容易:

 tail --bytes=+4 filename > new_filename 

@ tripleee的解决scheme不适合我。 但是将文件编码更改为ASCII并再次更改为UTF-8的技巧:-)

在Windows中,您可以使用UnxUtils的 backported recode实用程序。

在Sublime Text中,您可以安装Highlighter软件包 ,然后在用户设置中自定义正则expression式。

在这里,我将\uFEFF添加到highlighter_regex属性的末尾。

 { "highlighter_enabled": true, "highlighter_regex": "(\t+ +)|( +\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t ]+$", "highlighter_scope_name": "invalid", "highlighter_max_file_size": 1048576, "highlighter_delay": 3000 } 

要覆盖默认的软件包设置,请在此处放置文件:

〜/的.config /崇高文本-3 /封装/用户/ highlighter.sublime的设置

我用vimgrep来做这个

 :vim "[\uFEFF]" * 

也正常的vimsearch命令

 /[\uFEFF] 

保存没有代码签名的文件。

'file'命令显示BOM是否存在:

例如:'file myfile.xml'显示:“XML 1.0文档,UTF-8 Unicode(带有BOM)文本,非常长的行,带有CRLF行结束符”

dos2unix将删除BOM。