Удаление скрытых символов конца файла (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 Лексическая ошибка в строке 119, столбец 1.
 Обнаружено: "?" (63), после: ""??? /**** левая колонка ****/ 

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

3 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам