我正在压缩 JavaScript 文件,压缩器抱怨我的文件中有
字符。
如何搜索这些字符并删除它们?
删除这些字符的另一种方法 - 使用Vim:
vim -b 文件名
现在那些“隐藏”的字符是可见的 ( <feff>
) 并且可以被移除。
感谢您之前的回答,这里有一个 sed(1) 变体以防万一:
sed '1s/^\xEF\xBB\xBF//'
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
如果您的文件中有其他 utf-8,我会假设该工具会中断,但如果没有,也许这种解决方法可以帮助您。(未经测试...)
编辑-CSD
:根据 tchrist 的评论添加了该选项。
在 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可能更容易:
tail --bytes=+4 filename > new_filename
@tripleee 的解决方案对我不起作用。但是将文件编码更改为 ASCII 并再次更改为 UTF-8 就可以了:-)
我为此使用了 vimgrep
:vim "[\uFEFF]" *
也是正常的 vim 搜索命令
/[\uFEFF]
'file' 命令显示 BOM 是否存在:
例如:'file myfile.xml' 显示:“XML 1.0 文档,UTF-8 Unicode(带 BOM)文本,行很长,带有 CRLF 行终止符”
dos2unix 将删除 BOM。
在 Windows 中,您可以使用UnxUtils的反向移植重新编码实用程序。
在Sublime Text中,您可以安装Highlighter 包,然后在用户设置中自定义正则表达式。
在这里,我添加\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/sublime-text-3/Packages/User/highlighter.sublime-settings
我建议使用“dos2unix”工具,请测试运行dos2unix ./thefile.js
。
如有必要,请尝试对多个文件使用类似的内容:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
致以我的问候。
保存没有代码签名的文件。