我正在压缩JavaScript文件,而压缩程序则抱怨我的文件中含有
字符。
如何搜索并删除这些字符?
我正在压缩JavaScript文件,而压缩程序则抱怨我的文件中含有
字符。
如何搜索并删除这些字符?
U+FEFF
是用于BOM的Unicode代码点,但BOM本身就是该代码点的编码方式(UTF-8:0xEF 0xBB 0xBF
,UTF-16LE:0xFF 0xFE
,UTF-16BE:0xFE 0xFF
等)。因此,所涉及的文件是UTF-8编码的,压缩程序在将其解码为实际的Unicode代码点时会检测到这些文件。
Answers:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
如果文件中包含其他utf-8,我认为该工具会损坏,但是如果没有,也许该解决方法可以为您提供帮助。(未经测试...)
编辑:-CSD
根据tchrist的评论添加了该选项。
-CSD
开关,或将其PERL_UNICODE
变量设置SD
为,才能正常运行。
perl -CSD -pe 's/^\x{feff}//' file.csv
,请注意从<fffe>更改为<feff>。
删除那些字符的另一种方法-使用Vim:
vim -b文件名
现在,那些“隐藏”字符是可见的(<feff>
),可以将其删除。
感谢您之前的回答,以下是sed(1)的变体,以防万一:
sed '1s/^\xEF\xBB\xBF//'
$'\xEF\xBB\xBF//'
是Bash功能,尤其不是Mac或OSX功能。通过这种构造,Bash将在将命令行传递给之前将转义序列解析为实际字节sed
。根据您的sed
变体,此方法可能会或可能不起作用(尽管我确信OSX用户知道应该为他们开箱即用是有用的)。
我为此使用了vimgrep
:vim "[\uFEFF]" *
也是正常的vim搜索命令
/[\uFEFF]
在Windows中,您可以使用UnxUtils的backported recode实用程序。
在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
保存文件,不带代码签名。
<U+FEFF>
,那是<0xEF,0xBB,0xBF>
那是UTF8文件BOM,所以你应该更改标题。您想如何删除它们?通过魔术仙子?通过命令行工具?通过一对一编辑?Notepad ++可以将编码更改为不带BOM的UTF8。例如,仅搜索了5秒钟的“ strip BOM utf8”,我已经在Linux上找到了它:ueber.net/who/mjl/projects/bomstrip