显示在文件中的<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。