Правило CSS @charset используется для явной установки кодировки подключаемого CSS-файла. В большинстве случаев браузер сам может определить кодировку, поэтому указывать @charset имеет смысл, если в стилях используются какие-то символы отличные от обычной латиницы, например в CSS-комментариях.
При определении кодировки внешней таблицы стилей браузеры используют следующий приоритет (от высшего к низшему):
- Данные по кодировке получаемые по серверному протоколу.
- Кодировка указанная в правиле @charset .
- Кодировка используемая в атрибуте charset тега
- (если есть).
- Кодировка HTML-страницы установленная в метатеге Content-Type ( ).
- Если определить не получилось, то используется кодировка UTF-8.
Во избежание каких-либо проблем с определением кодировки, рекомендую вам писать комментарии в CSS-файлах только латинскими буквами, а не использовать @charset .
Содержание
- Тип правила
- Значения
- 4 ответов
- рекомендуемая литература
- Краткая информация
- Версии CSS
- Описание
- Синтаксис
- Значения
- Браузеры
Тип правила
Применяется: только во внешних таблицах стилей и только в единственном числе в самом начале CSS-файла.
Значения
Значением @charset является указание кодировки взятой в обязательные кавычки, которая пишется сразу после объявления самого правила, например «Windows-1251» или «utf-8».
Я видел эту инструкцию как самую первую строку многочисленных файлов CSS, которые были переданы мне:
что он делает, и это правило нужно?
кроме того, если я включу этот мета-тег в свой элемент «head», это устранит необходимость его присутствия в моих CSS-файлах?
4 ответов
Он сообщает браузеру прочитать файл css как UTF-8. Это удобно, если CSS содержит символы юникода, а не только ASCII.
использование его в метатеге нормально, но только для страниц, которые включают этот мета-тег.
прочитайте о правилах разрешения набора символов CSS-файлов в спецификация W3C для CSS 2.
это полезно в контекстах, где кодировка не указана в заголовке HTTP или других метаданных, например в локальной файловой системе.
представьте себе следующую таблицу:
если читатель сохраняет файл на жесткий диск и опустить @charset правило, большинство браузеров будут читать его в кодировке языкового стандарта ОС, например Windows-1252, и вставлять â†- вместо стрелки.
к сожалению, вы не можете полагаться на этот механизм в качестве поддержки довольно . редко. И помните, что в сети HTTP-заголовок всегда будет переопределить @charset правило.
правильный правила для определения набора символов таблицы стилей в порядке приоритета:
- заголовок кодировки HTTP.
- Метку Порядка Следования Байтов.
- первый @charset правило.
- UTF-8.
последнее правило самое слабое, оно будет не работает в некоторых браузерах.
The в
устарел в HTML 5.
Следите за конфликтом между различными декларациями. Их нелегко отлаживать.
рекомендуемая литература
- Русс Рольфе: объявление кодировок символов в CSS
- в IANA: официальные имена для наборов символов — другие имена не допускаются; используйте имя на @charset если для одного и того же имени зарегистрировано более одного кодирование.
- MDN: @charset . Существует таблица поддержки. Я не доверяю этому. 🙂
- тест из РГ CSS.
одна из причин всегда включать спецификацию набора символов на каждой странице, содержащей текст, — избегать уязвимостей межсайтовых сценариев. В большинстве случаев набор символов UTF-8 является лучшим выбором для текста, включая HTML-страницы.
Если вы помещаете тег в свои css-файлы, вы делаете что-то неправильно. Тег принадлежит вашему HTML-код файлы и сообщает браузеру, как кодируется html, он ничего не говорит о css, который является отдельным файлом. Вы могли бы иметь совершенно разные кодировки для вашего html и css, хотя я не могу себе представить, что это была бы хорошая идея.
Краткая информация
Версии CSS
Описание
Команда @charset применяется для задания кодировки внешнего CSS-файла. Это имеет значение в том случае, если в CSS-файле используются символы национального алфавита.
Для внешней таблицы стилей браузер последовательно просматривает следующие пункты для определения кодировки таблицы стилей:
- кодировка, которую отдает сервер;
- правило @charset ;
- атрибут charset тега
- ;
- кодировка, установленная в документе через метатег ( ).
Приведенный список имеет четко выраженную иерархию — чем выше находится пункт, тем выше его приоритет. Если ни один из пунктов не найден, будет установлена кодировка UTF-8.
Синтаксис
Значения
Для русского языка обычно указывается кодировка windows-1251 или utf-8. Значение кодировки обязательно должно быть взято в кавычки.
CSS2.1 IE 9 Cr Op Sa Fx
Браузеры
В браузере Internet Explorer до версии 7.0 включительно название кодировки допускается писать без кавычек, что противоречит спецификации CSS.
Источник: