2012-02-01 97 views
10

我正在使用其他JavaScript文件串联的Javascript文件。从文件中删除多个BOM

不幸的是,将这些JavaScript文件连接在一起的人在阅读文件时没有使用正确的编码,并且允许将每个JavaScript文件的BOM写入连接的JavaScript文件。

有谁知道一个简单的方法来搜索连接文件并删除任何/所有BOM标记?

对于Mac OSX使用PHP或bash脚本会很好。

+0

有你使用记事本tryed ++,Encodage>选择一个认为应该在那里,将其转换回UTF8,NoBoms – 2012-02-01 18:05:21

+1

什么是编译JavaScript文件?你当然是指串联或什么? – mario 2012-02-01 18:11:34

+0

是的,连接,编辑。 – 2012-02-01 18:14:25

回答

13

参见:Using awk to remove the Byte-order mark

从任何地方的文本文件,你可以尝试类似的东西内删除多个材料明细表。刚刚离开了^锚:(。这个编辑就地文件,但创建一个备份file.js~

perl -e 's/\xef\xbb\xbf//;' -pi~ file.js 

0

我也想通了这个解决方案,它在PHP完全工作:

$packed = pack("CCC",0xef,0xbb,0xbf); 
$contents = preg_replace('/'.$packed.'/','',$contents); 
+1

键入'“\ xef \ xbb \ xbf”'可能会更容易,请参阅[双引号字符串转义](http://www.php.net/manual/en/language.types.string.php#language.types .string.syntax.double)。 – Wrikken 2012-02-01 19:32:52

13

我通常做它用vim

vim -c "set nobomb" -c wq! myfile 
+0

这对我有用。我无法让'sed'命令去掉它们。 – ibic 2017-04-07 07:25:05