我正在对 JavaScript 文件进行压缩,压缩器抱怨说我的文件中包含 字符。

如何搜索这些字符并删除它们?
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
I would assume the tool will break if you have other utf-8 in your files, but if not, perhaps this workaround can help you. (Untested ...)
Edit: added the -CSD option, as per tchrist's comment.
-CSD
@tripleee's solution didn't work for me. But changing the file encoding to ASCII and again to UTF-8 did the trick :-)
You can easily remove them using vim, here are the steps:
1) In your terminal, open the file using vim:
vim file_name
2) Remove all BOM characters:
:set nobomb
3) Save the file:
:wq
In windows you could use backported recode utility from UnxUtils.
Thanks for the previous answers, here's a sed(1) variant just in case:
sed '1s/^\xEF\xBB\xBF//'
Using tail might be easier:
tail --bytes=+4 filename > new_filename
Another method to remove those characters - using Vim:
vim -b fileName
Now those "hidden" characters are visible (<feff>) and can be removed.
<feff>
In Sublime Text you can install the Highlighter package and then customize the regular expression in your user settings.
Here I added \uFEFF to the end of the highlighter_regex property.
\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 }
To overwrite the default package settings place the file here:
~/.config/sublime-text-3/Packages/User/highlighter.sublime-settings
On Unix/Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
On MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
注意mac的sed后面的$。
On Windows
There is Super Sed an enhanced version of sed. For Windows this is a standalone .exe, intended for running from the command line.
Save the file without code signature.
I've used vimgrep for this
:vim "[\uFEFF]" *
also normal vim search command
/[\uFEFF]
The 'file' command shows if the BOM is present:
For example: 'file myfile.xml' displays: "XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators"
dos2unix will remove the BOM.
I'm suggest the use of "dos2unix" tool, please test to run dos2unix ./thefile.js.
dos2unix ./thefile.js
If necessary try to use something like this for multiple files:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
My Regards.