2010-04-30 25 views
6

Tôi có một bản dựng kiến ​​ghép nối javascript của tôi vào một tệp và sau đó nén nó. Vấn đề là mã hóa mặc định của Visual Studio gắn một BOM vào mọi tệp. Làm thế nào để cấu hình ant để loại bỏ BOM mà nếu không sẽ xuất hiện ở giữa của tập tin kết nối nối?Nhận kiến ​​concat để bỏ qua BOM '?

googl'ing My tiết lộ cuộc thảo luận này đó là vấn đề chính xác tôi đang gặp nhưng không cung cấp một giải pháp: http://marc.info/?l=ant-user&m=118598847927096

Trả lời

12

Unicode byte order mark điểm mã là U + FEFF. lệnh nối này sẽ loại bỏ tất cả các ký tự BOM khi concatenating hai tập tin:

<concat encoding="UTF-8" outputencoding="UTF-8" destfile="nobom-concat.txt"> 
    <filelist dir="." files="bom1.txt,bom2.txt" /> 
    <filterchain> 
    <deletecharacters chars="&#xFEFF;" /> 
    </filterchain> 
</concat> 

Hình thức này của lệnh concat nói với nhiệm vụ để giải mã các tập tin dưới dạng dữ liệu tự UTF-8. Tôi giả sử UTF-8 vì đây thường là nơi các vấn đề Java/BOM xảy ra.

Trong UTF-8, BOM được mã hóa dưới dạng byte EF BB BF. Nếu bạn cần nó xuất hiện ở đầu tệp kết quả, bạn có thể sử dụng nối tiếp tiếp theo để nối tiếp tệp đầu ra với một BOM một lần nữa.

Giá trị được mã hóa cho U + FEFF trong các mã hóa UTF khác được liệt kê here.

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