2012-02-01 38 views
10

Tôi đang sử dụng tệp Javascript là một tệp nối của các tệp JavaScript khác.Xóa nhiều BOM khỏi một tệp

Thật không may, người kết nối các tệp JavaScript này lại không sử dụng mã hóa thích hợp khi đọc tệp và cho phép BOM cho mỗi tệp JavaScript duy nhất được ghi vào tệp JavaScript được ghép nối.

Có ai biết một cách đơn giản để tìm kiếm thông qua tệp nối và loại bỏ bất kỳ/tất cả các dấu BOM không?

Sử dụng PHP hoặc tập lệnh bash cho Mac OSX sẽ tuyệt vời.

+0

có bạn tryed sử dụng Notepad ++, Encodage> chọn một trong đó nên có mặt ở đó, Chuyển đổi nó trở lại UTF8-NoBoms –

+1

được nộp Thật là một javascript biên soạn? Bạn chắc chắn có nghĩa là ghép nối hay gì? – mario

+0

Đúng, nối, chỉnh sửa. –

Trả lời

13

Xem thêm: Using awk to remove the Byte-order mark

Để loại bỏ nhiều BOMs từ bất cứ nơi nào bên trong một file văn bản mà bạn có thể thử một cái gì đó tương tự. Chỉ cần bỏ qua ^ neo: (.. Này chỉnh sửa các tập tin tại chỗ Nhưng tạo ra một bản sao lưu file.js~)

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

0

Tôi cũng đã tìm ra giải pháp này mà làm việc hoàn toàn trong PHP:

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

Nó có thể dễ dàng hơn để gõ '" \ xef \ xbb \ xbf "', xem [chuỗi trích dẫn kép trích dẫn] (http://www.php.net/manual/en/language.types.string.php#language.types .string.syntax.double). – Wrikken

13

tôi thường làm điều đó bằng vim:

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

Điều này làm việc cho tôi. Tôi không thể nhận lệnh 'sed' để loại bỏ chúng. – ibic

0

lấy BOM file

grep -rIlo $’^\xEF\xBB\xBF’ ./

loại bỏ tập tin BOM

grep -rIlo $’^\xEF\xBB\xBF’ . | xargs sed –in-place -e ‘s/\xef\xbb\xbf//’

loại trừ svn dir

grep -rIlo –exclude-dir=”.svn” $’^\xEF\xBB\xBF’ . | xargs sed –in-place -e ‘s/\xef\xbb\xbf//’

Các vấn đề liên quan