Удаление скрытых конечных символов файлов (BOM) в visual studio

Я использую пакетный файл для объединения всех моих css-файлов

copy /b reset.css+action-plan.css+buttons.css+behaviours.css+footer.css+forms.css+header.css+home.css+layout.css+lightbox.css+print.css+questionnaire.css+typography.css+you-told-us.css main.css

Я делал это много раз раньше в разных проектах, но этот проект использует .NET, и все файлы редактируются в visual studio.

проблема в том, что в конце каждого файла добавляются таинственные скрытые символы, что при объединении приводит к недопустимости результирующего css.

 126  BLOCKQUOTE, Q   Lexical error at line 119, column 1.
 Encountered: "?" (63), after : "" ??? /**** left column ****/ 

все отдельные файлы CSS проверьте и ошибки только брошены в объединенном файле в точках, были отдельные файлы присоединиться.

3 ответов


проблема связана с меткой порядка байтов (BOM) в ваших файлах. Знак порядка байтов предназначен для файлов unicode, чтобы сообщить процессору порядок байтов. Подробнее об этом можно прочитать здесь:

http://en.wikipedia.org/wiki/Byte_order_mark

проблема в том, что Visual Studio добавляет эти метки в ваш файл css, и когда вы объединяете их путем конкатенации, BOMs заканчиваются в середине текста, что все портит.

когда вы заходите в диалоговое окно Сохранить как, вы можете развернуть кнопку СОХРАНИТЬ, чтобы увидеть опцию "Сохранить с кодировкой". Это предложит вам другую кодировку, и я думаю, что один из вариантов Unicode оставит спецификацию (где-то в списке есть UTF-8 без подписи).

Я не знаю, как настроить Visual Studio на использование определенной кодировки по умолчанию.

чтобы обойти проблемы, я создал программу для объединения файлов, которые будут уважать спецификацию. Я использую это вместо копирования, или в Unix кот.


вы, вероятно, хотите использовать yuicompressor .NET, вместо того, чтобы писать это самостоятельно.


Я написал изящную маленькую программу командной строки который объединяет все файлы (например, css и т. д.) В каталоге и удаляет BOM (метку порядка байтов) для вас. Это около 5 строк кода и использует cssmin.JS для обработки минификации для вас. Существует также пример того, как это выглядит в событии сборки Visual Studio post. Проверьте это o