Удаление скрытых конечных символов файлов (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