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

时间:2011-09-04 07:20:20

标签: file unicode utf-8 utf

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

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

13 个答案:

答案 0 :(得分:166)

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

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

vim file_name

2)删除所有BOM个字符:

:set nobomb

3)保存文件:

:wq

答案 1 :(得分:26)

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

  

vim -b fileName

现在那些&#34;隐藏&#34;字符是可见的(<feff>),可以删除。

答案 2 :(得分:17)

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

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

修改:根据tchrist的评论添加了-CSD选项。

答案 3 :(得分:16)

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

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

答案 4 :(得分:15)

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

答案 5 :(得分:5)

使用 tail 可能更容易:

tail --bytes=+4 filename > new_filename

答案 6 :(得分:3)

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

答案 7 :(得分:2)

我已经将vimgrep用于此

:vim "[\uFEFF]" *

也是普通的vim搜索命令

/[\uFEFF]

答案 8 :(得分:1)

在Windows中,您可以使用UnxUtils中的backported 重新编码实用程序。

答案 9 :(得分:1)

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

在这里,我将\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-设置

答案 10 :(得分:1)

&#39;&#39;命令显示BOM是否存在:

例如:&#39; file myfile.xml&#39;显示:&#34; XML 1.0文档,UTF-8 Unicode(带BOM)文本,带有很长的行,带有CRLF行终止符&#34;

dos2unix将删除BOM。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

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

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

我的问候。