2010-04-30 8 views
6

Mam kompilację ant, która łączy mój javascript w jeden plik, a następnie kompresuje go. Problem polega na tym, że domyślne kodowanie Visual Studio dołącza LM do każdego pliku. Jak mogę skonfigurować mrówkę, aby usunąć BOM-y, które pojawiłyby się w środku wynikowego połączonego pliku?Uzyskaj ant concat, aby zignorować BOM's?

Moja googl'ing ujawnił tę dyskusję, która jest dokładna Problem mam, ale nie zapewnia rozwiązanie: http://marc.info/?l=ant-user&m=118598847927096

Odpowiedz

12

Unicode byte order mark punkt kodowy U + jest FEFF. To polecenie konkatenacji obetnie wszystkie znaki BOM gdy łączenie dwóch plików:

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

Ta forma komendy concat opowiada zadanie dekodowania plików danych UTF-8 znaków. Zakładam kodowanie UTF-8, ponieważ zazwyczaj występuje tam problem z Java/BOM.

W UTF-8 zestawienie materiałowe jest kodowane jako bajty EF BB BF. Jeśli chcesz, aby pojawił się na początku pliku wynikowego, możesz użyć kolejnej konkatenacji, aby ponownie dodać plik wyjściowy do LM.

Zakodowane wartości dla U + FEFF w innych kodowaniach UTF są wymienione na here.