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

Qui*_*Par 85 unicode file utf-8 utf

我正在压缩JavaScript文件,压缩器抱怨我的文件中有字符.

如何搜索这些字符并将其删除?

Moh*_*ini 182

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

1)在终端中,使用vim打开文件:

vim file_name
Run Code Online (Sandbox Code Playgroud)

2)删除所有BOM字符:

:set nobomb
Run Code Online (Sandbox Code Playgroud)

3)保存文件:

:wq
Run Code Online (Sandbox Code Playgroud)


ROM*_*eer 28

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

vim -b fileName

现在这些"隐藏"字符是可见的(<feff>)并且可以被删除.


tri*_*eee 18

perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Run Code Online (Sandbox Code Playgroud)

如果您的文件中有其他utf-8,我会认为该工具会中断,但如果没有,也许这种解决方法可以帮助您.(未经测试......)

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

  • 在Mac OSX上,我不得不改为:`perl -CSD -pe's/^\x {feff} //'file.csv`,注意从<fffe>到<feff>的变化. (2认同)

Mic*_*rin 18

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

sed '1s/^\xEF\xBB\xBF//'
Run Code Online (Sandbox Code Playgroud)


Mas*_*sum 16

在Unix/Linux上:

sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)

在MacOSX上

sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)

请注意mac之后的$ sed.

在Windows上

Super Sedsed的增强版本.对于Windows,这是一个独立的.exe,用于从命令行运行.


Dza*_*nvu 5

使用tail可能更容易:

tail --bytes=+4 filename > new_filename
Run Code Online (Sandbox Code Playgroud)

  • 在文件的生产者删除 BOM 后,此技术将失败。不可扩展...:) (2认同)