89

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

如何搜索这些字符并删除它们?

4

13 回答 13

195

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

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

vim file_name

2)删除所有BOM字符:

:set nobomb

3)保存文件:

:wq
于 2013-02-28T14:11:04.413 回答
31

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

vim -b 文件名

现在那些“隐藏”的字符是可见的 ( <feff>) 并且可以被移除。

于 2014-11-12T16:36:42.477 回答
24

感谢您之前的回答,这里有一个 sed(1) 变体以防万一:

sed '1s/^\xEF\xBB\xBF//'
于 2013-04-23T20:32:48.653 回答
18
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js

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

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

于 2011-09-04T11:47:44.460 回答
18

在 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,用于从命令行运行。

于 2015-04-07T11:45:50.133 回答
6

使用tail可能更容易:

tail --bytes=+4 filename > new_filename
于 2013-11-26T05:53:40.870 回答
3

@tripleee 的解决方案对我不起作用。但是将文件编码更改为 ASCII 并再次更改为 UTF-8 就可以了:-)

于 2012-04-03T15:21:08.393 回答
3

我为此使用了 vimgrep

:vim "[\uFEFF]" *

也是正常的 vim 搜索命令

/[\uFEFF]
于 2016-03-10T09:16:20.497 回答
2

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

例如:'file myfile.xml' 显示:“XML 1.0 文档,UTF-8 Unicode(带 BOM)文本,行很长,带有 CRLF 行终止符”

dos2unix 将删除 BOM。

于 2017-05-19T12:12:50.813 回答
1

在 Windows 中,您可以使用UnxUtils的反向移植重新编码实用程序。

于 2013-04-14T12:22:58.520 回答
1

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

在这里,我添加\uFEFFhighlighter_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

于 2015-01-09T23:48:02.207 回答
1

我建议使用“dos2unix”工具,请测试运行dos2unix ./thefile.js

如有必要,请尝试对多个文件使用类似的内容:

for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done

致以我的问候。

于 2018-12-17T17:17:50.383 回答
0

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

于 2015-04-17T13:33:47.623 回答