我正在压缩JavaScript文件,压缩器抱怨我的文件中包含
个字符。
如何搜索这些字符并将其删除?
答案 0 :(得分:166)
答案 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
我的问候。