Атрибут charset в HTML


HTML charset attribute

charset

The purpose of the HTML charset attribute is to define the character encoding style of a given linked resource.

Supported elements

HTML charset attribute supports a, link, script element.

Syntax

Where ElementName is any supported element.

Type of value

Type of value of HTML charset attribute is a character set.

Value

A character encoding type.

Default value

There is no default value. But most of the modern browsers use ISO-8859-1 as a default value.

Supported doctypes

HTML 4.01 strict, HTML 4.01 transitional, HTML 4.01 frameset.

Example of HTML charset attribute with a

Result

View this example in a separate browser window

Example of HTML charset attribute with link

Usage of HTML charset attribute with script

Атрибут charset

Атрибут charset — определяет набор символов (кодировку) ресурса, на который указывает ссылка или блока выполнения скрипта.

Ссылки могут указывать на документы, использующие другие кодировки символов. Поэтому теги и поддерживают атрибут charset, который позволяет авторам рекомендовать агентам пользователей кодировку данных в связанном документе.

Так же играет важную роль при определении кодировки всего html документа с помощью тега meta.

Кодировка UTF – основной стандарт текста в интернете

Нужно правильно раскодировать сигналы, которые наш мозг получает из окружающей среды. Проще говоря, следует правильно « настроить » свой взгляд на жизнь. Ну, вроде не полупустой кошелек, а наполовину полный. То есть, требуется использовать нужную кодировку. Для интернета чаще всего правильной является кодировка utf :

Немного о кодировках

Наверное, не является секретом тот факт, что основным типом содержимого во всемирном веб-пространстве является текст. Конечно, сейчас с этим утверждением можно поспорить, но буквально какой-то десяток лет назад это было так.

Но передача текста в цифровом формате происходит совсем иначе, чем у нас на экране. Для перевода текста в машинный код используется двоичная система исчисления, состоящая лишь из 0 и 1.

Следующим этапом передачи текста в виртуальном пространстве является его отображение на клиентских машинах с помощью браузера, интерпретирующего html . Вот тут и начинается самое интересное, когда браузер клиента и веб-страница содержат в себе текстовые данные в разных кодировках. Тогда пользователь на своем мониторе видит не текст, а какие-то непонятные ( нечитаемые ) символы:

Чаще всего нужно всего лишь поменять кодировку веб-страницы на кодировку utf8. Ведь она является наиболее распространенной во всем интернете.

Кодировка UTF-8

Наиболее распространенная среди стандартизированных и общепринятых текстовых кодировок. Расшифровывается как « восьмибитный формат преобразования Юникода » или « Unicode Transformation Format ».

Стандарт был разработан еще в 1992 году. В настоящее время он широко применяется не только во всемирной паутине, но и на прикладном уровне ( локальные машины и операционные системы ). Основным достоинством кодировки является ее совместимость с ASCII:

ASCII («American standard code for information interchange») еще одна (но более старая) кодировка представления текстовых данных. В ее таблице символов значения печатных и непечатных знаков заданы с помощью чисел в шестнадцатеричной системе исчисления.

При использовании UTF-8 для передачи данных в формате ASCII используются 7 первых битов. Последний ( восьмой ) служит для вывода « мусора » ( некорректно раскодированных данных ). Что при использовании кодировки для латинских символов существенно уменьшает объем текстовых данных.

Как уже говорилось, часто для корректного отображения текста достаточно лишь поменять кодировку документа. Рассмотрим, как это можно сделать в различных дисциплинах, применяемых для построения веб-пространства.

Как установить кодировку в HTML и PHP

Для установки utf 8 кодировки в html используется специальный тег . Он объединяет в себе в форме атрибутов значение метатегов.

Метатеги используются для передачи и хранения информации, предназначенной для браузеров и поисковиков. Одним из атрибутов тега является charset . Он служит для установки кодировки веб-страницы. Пример использования:

Также можно установить кодировку некоторым элементам страницы. Например, ссылке. Для этого также используется атрибут charset , значением которого выступает нужная кодировка:

Кроме этого можно присваивать значения непосредственно заголовкам http , которые передаются вместе с ответом на запрос от браузера к серверу. В таком случае кодировка сайта utf 8 , переданная через заголовок, будет доминирующей над значением, заданным внутри веб-страницы.

Многие из страниц ресурсов не являются статическими, а динамически создаются благодаря использованию серверных языков программирования. Чаще всего для построения сайтов применяют PHP . Поэтому важно знать о его средствах, позволяющих «на лету» поменять кодировку генерируемой веб-страницы.

Для установки и модификации значений заголовка используется функция header() . Ее синтаксис:

Чтобы корректно задать в php кодировку utf 8 , вызов функции header() в коде должен находиться выше всех тегов html .

Глобальные настройки кодировки

Описанные выше методы могут использоваться для отдельных веб-страниц или небольших сайтов. Но что делать, если вы имеете дело с ресурсом, состоящим из нескольких сотен страниц и десятка разделов? Давайте разберемся, как установить кодировку utf 8 для всего сайта.

Для этого нужно вносить изменения в дополнительный файл конфигурации ресурса. Он носит название .htaccess . Сначала его нужно открыть в любом текстовом редакторе, а затем добавить туда строку:

В качестве более глобального способа изменения кодировки стоит рассмотреть пример на основе любого локального сервера. Для большей наглядности мы возьмем Denwer , который довольно широко распространен в наших краях.

Чтобы изменить кодировку всех ресурсов, размещенных на нашем сервере Apache , нужно отредактировать содержимое конфигурационного файла httpd.conf . Он находится по пути:

Как и в предыдущем примере, в нем нужно заменить значение AddDefaultCharset на нужное. В нашем случае это utf-8 :

Изменение кодировки базы данных

Изменение кодировки рассмотрим на примере MySQL . Так как это одна из самых востребованных и распространенных СУБД, применяемых в сайтостроении. Все изменения можно произвести в файле my.ini . В Денвере он находится по пути:

Здесь нужно поменять значение нескольких полей на utf-8 :

  • default-character-set ;
  • character-set-server ;
  • init-connect = «set names» ;
  • default-character-set .

И затем добавить строку skip-character-set-client-handshake :

Подобные изменения можно внести не только для всех баз данных на сервере, но и для отдельно взятой в php базы mysql . Сделать это можно через пользовательский интерфейс оболочки PHPMyAdmin .

Илон Маск рекомендует:  Что такое код postgres95

Сначала узнаем, какие кодировки установлены по умолчанию в нашей базе данных. Для этого вводим запрос SQL :

Вот какой ответ мы должны получить:

Если какие-либо значения нас не удовлетворяют, то нужно их изменить. Воспользуемся для этого запросом к ядру сервера СУБД:

В результате мы получим новые значения переменных character_set_connection , character_set_results и character_set_client.

К сожалению, не все так просто обстоит с изменением кодировки в таблицах Excel . Для этого придется воспользоваться сторонней программой для перекодирования файлов. Или обработать данные с помощью громоздких функций.

Мы рассмотрели все основные способы изменения веб-документов на кодировку utf . Надеемся, что этот материал поможет вам не только выбрать правильную кодировку текста, но и « установить » правильный взгляд на жизнь.

Атрибут charset в мета тегах html

Атрибут charset позволяет установить нужную кодировку html страницы на сайте. Его синтаксис очень простой.

Синтаксис атрибута charset

Кодировка может принимать множество различных значений. Чаще всего используют следующие:

  • UTF-8 (используется чаще)
  • windows-1251

Кодировка файла очень важна, поскольку если ее указать неправильно, то весь контент на странице отобразится в виде иероглифов. Помимо кодировки самой страницы, кодировки в атрибуте charset есть еще и кодировка сервера. Особенно это влияет, если данные берутся из базы данных.

Зачастую используют более расширенный синтаксис:

Параметр content-type — указывает, что эти данные влияют на содержание, а параметр text/html указывает на какие конкретно данные.

Какое значение по умолчанию атрибута charset тега script?

Скажем, что у меня есть script:

Подводя итог, соответствующие пользовательские агенты должны соблюдайте следующие приоритеты, когда определение символа документа кодирования (от наивысшего приоритета до самый низкий):

  • Параметр «charset» HTTP в поле «Content-Type».
  • Объявление META с параметром «http-equiv» для «Content-Type» и значением, установленным для «charset».
  • Атрибут charset устанавливается на элемент, который обозначает внешний ресурс.

В дополнение к этому список приоритетов, пользовательский агент может используйте эвристику и пользовательские настройки. Для Например, многие пользовательские агенты используют эвристика для различения различных кодировки, используемые для японского текста. Кроме того, пользовательские агенты обычно имеют пользовательский, локальный по умолчанию кодирование символов, которое они применяют в отсутствие других индикаторов.

В соответствии с w3schools.com значение имеет значение ISO-8859-1, и это поддерживается во всех основных браузерах.

Если для отправителя не указывается явный параметр charset, подтипы мультимедиа типа «text» определяются как значение по умолчанию для кодировки «ISO-8859-1» при получении по HTTP. Данные в наборах символов, отличных от «ISO-8859-1» или его подмножеств, ДОЛЖНЫ быть помечены соответствующим значением кодировки. См. Раздел 3.4.1 для проблем с совместимостью.

Итак, все, что не соответствует этому, технически не соответствует спецификации HTTP 1.1.

Linux.yaroslavl.ru

Содержание

В этой главе мы обсудим, как документы HTML отображаются на компьютере и в Internet.

В разделе кодовая страница документа обсуждается вопрос о том, как абстрактные символы могут быть частью документа HTML. Символы включают буквы латиницы, кириллицы, китайские символы «водяные знаки», и т.д.

В разделе виды кодировки обсуждается представление символов в файле или при пересылке в Internet. Поскольку некоторые кодировки не могут прямо представить все символы, которые автор хочет включить в документ, HTML предлагает механизм, называемый ссылки-мнемоники, для изображения любых символов.

Поскольку существует огромное количество символов в языках различных народов и большое разнообразие способов представления этих символов, нужен особый подход для того, чтобы документы были доступны для чтения в любом браузере в любой точке земного шара.

5.1 Кодовая страница документа

С целью улучшения взаимодействия, SGML требует, чтобы каждое приложение (приложение HTML — в том числе) специфицировало свой набор символов. Набор символов (кодовая страница) состоит из:

  • : набора абстрактных символов, таких как латинская буква «A», русская буква «И», китайские «водяные знаки» и т.д.
  • : набора цифровых ссылок на символы в «репертуаре».

Каждый документ SGML (включая каждый документ HTML) — это последовательность символов из «репертуара». Операционная система компьютера идентифицирует каждый символ по его кодовой позиции. Например, в наборе символов ASCII кодовые позиции 65, 66 и 67 ссылаются на символы ‘A’, ‘B’ и ‘C’ соответственно.

Набор символов ASCII недостаточен для глобальных информационных систем, таких как Web, поэтому HTML использует более полный набор символов, называемый Universal Character Set (UCS)/Универсальный Набор символов, определённый в документе [ISO10646]. Этот стандарт определяет репертуары тысяч наборов символов, используемых во всём мире.

Набор символов, определённый в [ISO10646], это символ-символ эквивалент Юникода ([UNICODE]). Оба этих стандарта время от времени дополняются новыми символами, и по этим поправкам нужно постоянно консультироваться на соответствующих Web-сайтах. В текущей спецификации ISO10646 использован для определения набора символов, в то время как UNICODE зарезервирован для ссылок на двунаправленный текстовый алгоритм.

Одного набора символов, однако, недостаточно для того, чтобы браузеры пользователя могли корректно интерпретировать документы HTML, так как они обычно кодируются как последовательность байтов в файле во время передачи по сети. Браузер пользователя должен также «знать» специфическую кодировку, используемую для трансформации документа в поток байтов.

5.2 Кодовые страницы

То, что в этой спецификации называется кодировкой символов, известно под различными названиями в других спецификациях (что может иногда смущать). Однако общее понимание — одно во всей сети Internet.
Заголовки протоколов (protocol headers), атрибуты и параметры, относящиеся к кодировке символов, используют один термин — «charset» и одни и те же значения из регистрации [IANA] (смотри полный список в [CHARSETS]).

Параметр «charset» идентифицирует кодировку символов, которая представляет собой метод конвертации последовательности байтов в последовательность символов. Эта конвертация соответствует, по своей природе, схеме деятельности Web: серверы посылают документы HTML браузерам пользователей как поток байтов, браузеры пользователей интерпретируют его в последовательность символов.
Методы конвертации варьируются от простых один-за-другим до сложных схем переключения и алгоритмов.

Простая техника кодирования, один-байт-один-символ, недостаточна для использования символов, не входящих в «репертуар» [ISO10646]. Есть несколько различных кодировок, начиная с частичных кодировок с использованием [ISO10646], и до кодировок полного набора символов (как UCS-4).

5.2.1 Выбор кодировки

Средства создания документов (например, текстовые редакторы) могут кодировать документы HTML по своему усмотрению, и это зависит в основном от соглашений, используемых разработчиками программ. Эти программы для создания документов используют любую подходящую кодировку, которая отображает большую часть нужных символов, корректно обозначая эту кодировку. Отдельные символы, не входящие в соответствующую кодировку, могут быть вставлены по ссылке. Это всегда имеет отношение к набору символов документа, а не к кодировке.

Серверы и proxy-серверы могут изменять кодировку символов (это называется transcoding) «на ходу», чтобы принять запрос пользовательского браузера (смотри раздел 14.2 в [RFC2616], заголовок запроса «Accept-Charset» HTTP). Серверы и прокси-серверы не должны обязательно обслуживать документ в той кодировке, которая покрывает весь набор символов этого документа.

Илон Маск рекомендует:  Тег canvas

Обычно в Web используются кодировки: ISO-8859-1 (также известная как «Latin-1», используется для большинства западноевропейских языков), ISO-8859-5 (поддерживающая кириллицу), SHIFT_JIS (японская кодировка), EUC-JP (другая японская кодировка) и UTF-8 (кодировка ISO 10646, использующая различное число байтов для различных символов). Названия кодировок нечувствительны к регистру. Таким образом, «SHIFT_JIS», «Shift_JIS» и «shift_jis» эквивалентны.

Эта спецификация не предписывает, какие кодировки браузер должен поддерживать.

Соответствие браузеров. Браузеры должны отвечать отображению, по ISO 10646, всех символов в любой кодировке, которые ими распознаются (или они должны действовать, как если бы они распознавали их).

Замечания по специальной кодировке

Если текст HTML передаётся в кодировке UTF-16 (charset=UTF-16), данные текста должны передаваться в сетевом порядке байтов («big-endian», старший байт — первый) в соответствии с [ISO10646], раздел 6.3 и [UNICODE], пункт C3, страница 3-1.

Кроме того, для того, чтобы увеличить шансы правильной интерпретации документа, рекомендуется, чтобы документ, передаваемый как UTF-16, всегда начинался символом ZERO-WIDTH NON-BREAKING SPACE (шестнадцатеричная FEFF, называемая также Byte Order Mark (BOM)), которая при перестановке байтов становится FFFE, символом, гарантирующим, что он никогда не будет установлен. Таким образом, браузер пользователя, получив FFFE как первый байт текста, сможет определить, что этот байт зарезервирован для напоминания о кодировке UTF-16.

UTF-1 формат трансформации [ISO10646] (зарегистрированный IANA как ISO-10646-UTF-1), не должен использоваться.
Об ISO 8859-8 и двунаправленном алгоритме см. раздел двунаправленность и кодировка символов.

5.2.2 Определение кодировки

Как сервер определяет кодировку документа? Некоторые серверы проверяют несколько первых байтов документа или проверяют информацию в базе данных об известных файлах и кодировках. Многие современные серверы дают Web-мастеру больше возможностей для контроля за конфигурацией наборов символов. Web-мастера должны использовать эти механизмы для передачи сведений «charset» всегда, когда это возможно, и не обозначать документ неправильным значением параметра «charset».

Как браузер пользователя распознаёт кодировку документа?
Эту информацию должен предоставлять сервер. Прямой путь для этого — использование параметра «charset» заголовочного поля «Content-Type» протокола HTTP ([RFC2616], разделы 3.4 и 14.17). Например, следующий заголовок HTTP объявляет кодировку EUC-JP:

Пожалуйста, просмотрите определение text/html в разделе соответствие.

Протокол HTTP ([RFC2616], раздел 3.7.1) упоминает ISO-8859-1 как кодировку по умолчанию в случае отсутствия параметра «charset» в поле заголовка «Content-Type». На практике эта рекомендация оказывается бесполезной, поскольку некоторые серверы не пересылают параметр «charset», а другие могут быть не сконфигурированы для пересылки параметра. Таким образом, браузер может не получить значение параметра «charset» по умолчанию.

Чтобы адресоваться к серверу или из-за ограничений конфигурации, документы HTML могут включать точную информацию о кодировке документа: элемент META может быть использован для предоставления этой информации браузерам.

Например, для указания кодировки документа в «EUC-JP» документ должен содержать следующее объявление META :

Объявление META должно использоваться, только если кодировка организована как ASCII-значащие байтовые позиции для символов ASCII (хотя бы до того, как элемент META уже разобран). Объявление META должно появиться в элементе HEAD как можно раньше.

Для случаев, когда ни HTTP-протокол, ни элемент META не дают информации о кодировке страницы, HTML предоставляет атрибут charset в некоторых элементах. Комбинируя эти возможности, автор повышает шансы того, что браузер пользователя, получив документ, правильно распознает кодировку страницы.

Суммируя вышесказанное: браузеры соответствующие требованиям, должны соблюдать следующие приоритеты при определении кодировки документа (от высшего приоритета к низшему):

  1. HTTP параметр «charset» в поле «Content-Type».
  2. Объявление META с «http-equiv», установленным в «Content-Type», и значением, установленным в «charset».
  3. Атрибут charset , установленный в элементе, обозначающем внешний ресурс.

В дополнение к этому списку приоритетов, браузер может использовать heuristics и пользовательские установки. Например, многие браузеры используют heuristics для различения кодировок японского текста. Также браузеры обычно используют локальные кодировки по умолчанию, определяемые пользователем, которые применяются при отсутствии других указателей.

Браузеры могут предоставлять механизм, позволяющий пользователю обойти некорректную информацию «charset». Однако, если браузер предоставляет такой механизм, он должен предлагать его только для просмотра, но не для редактирования, чтобы исключить создание Web-страниц, маркированных некорректным параметром «charset».

Примечание. Если в определённом приложении нужно обратиться к набору символов вне [ISO10646], символы должны быть выделены в отдельное пространство (private zone), чтобы исключить конфликты с будущими версиями стандарта. Однако, это крайне не рекомендуется из соображений переносимости.

5.3 Мнемоники (символы по ссылке, по псевдониму)

Конкретная кодировка может не давать возможность отобразить все символы набора символов документа. Для таких кодировок, или если конфигурация «железа» или программного обеспечения не позволяют пользователю непосредственно вводить некоторые символы, авторы могут использовать SGML — ссылки на символы. Ссылки на символы — это механизм для ввода любых символов, не зависящий от кодового набора документа.

Ссылки на символ (мнемоники) могут быть двух видов:

  • Цифровые мнемоники (десятеричные или шестнадцатеричные).
  • Мнемоники из символьных элементов.

Мнемоники внутри комментариев не имеют специального значения: это только лишь данные комментариев.

Примечание. HTML предоставляет другие возможности для представления символьных данных, в особенности — встроенные изображения\inline images.

Примечание. В SGML возможно отсутствие конечного символа «;» после ссылки-мнемоники в некоторых случаях (например, перед line break или непосредственно перед тегом). В других условиях это символ не может быть опущен (например, в середине слова). Мы настоятельно советуем использовать «;» во всех случаях, чтобы исключить проблемы с браузерами пользователей.

5.3.1 Цифровые мнемоники

кодовую позицию символа в символьном наборе документа. Цифровые мнемоники бывают двух видов:

  • «&#D;», где D, десятеричное число, ссылается на десятеричное значение D символа ISO 10646.
  • «&#xH;» или «&#XH;», где H, шестнадцатеричное число, ссылается на шестнадцатеричное значение H символа ISO 10646. Шестнадцатеричные числа в цифровых мнемониках нечувствительны к регистру.

Вот несколько примеров цифровых мнемоник:

  • å (10-ная) представляет букву «a» с маленьким кружком сверху (используется, напр., в Норвегии);
  • å (16-ная) та же самая буква;
  • å (16-ная) то же самое;
  • И (10-ная) русская «И» заглавная;
  • 水 (16-ная) китайский «водяной» символ.

Примечание. Хотя 16-ное представление не определено в [ISO8879], это ожидается при пересмотре, как описано в [WEBSGML]. Это соглашение особенно актуально, пока стандарты символов используют 16-ные представления.

5.3.2 Символьные ссылки-мнемоники (по псевдониму)

Чтобы предоставить авторам более интуитивный способ ссылки на символы в символьном наборе документа, HTML предлагает Символьные мнемоники используют псевдонимы, так что авторы могут не запоминать кодовую позицию. Например, символьную мнемонику å ссылающуюся на «a» с кружком сверху , «å» запомнить легче, чем å.

HTML 4 не определяет символьные мнемоники для всех символов кодового набора. В частности, нет символьной мнемоники для русской заглавной «И». Пожалуйста, просмотрите полный список символьных мнемоник, определённых в HTML 4.

Символьные мнемоники чувствительны к регистру. Так, Å ссылается на другую букву (A с кружком в верхнем регистре), а не на å (а с кружком в нижнем регистре).

Илон Маск рекомендует:  fseek - Устанавливает смещение в файловом указателе

Четыре символьные мнемоники должны быть упомянуты отдельно, так как они часто используются в определённых escape-последовательностях:

Автор, желающий использовать символ » » (ASCII десятеричная 62) вместо «>», чтобы избежать конфликтов со старыми браузерами, которые некорректно распознают это как конец тега (закрывающий ограничитель тега), если он появляется в значении атрибута в кавычках.

Автор должен использовать «&» (ASCII десятичное 38) вместо «&» во избежание конфликтов с обозначением начала ссылки. Автор также должен употреблять «&» в значениях атрибутов, пока символьные мнемоники допускаются внутри значений атрибутов CDATA.

Некоторые авторы используют символьную мнемонику «»» для кодирования появление двойных кавычек («), поскольку этот символ используется как ограничитель в значениях атрибутов.

5.4 Неотображаемые символы

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

Поэтому вид документа во многих случаях становится непредсказуемым. В зависимости от реализации, неотображаемые символы также могут обрабатываться системой дисплея, а не самой программой. В связи с этим, мы рекомендуем следующие действия в отношении браузеров пользователей:

  1. Создать ясный, но ненавязчивый механизм сообщения пользователю об отсутствующем ресурсе.
  2. Если отсутствующие символы представлены цифрами, используйте 16-ные (не десятеричные) формы, пока эти формы есть в стандартах.

Кодировка данных, отправляемых формой

Данные, отправляемые формой имеют ту же кодировку, что и страница, на которой находится форма. Но как же быть, если страница например в кодировке UTF-8, а надо чтобы данные отправлялись в кодировке windows-1251. Конечно есть такой вариант, как сменить кодировку у страницы. Но это не всегда возможно, сайт — CMS уже настроена на работу с конкретной кодировкой.

Поменять кодировку отправляемых формой данных можно прописав у тега form атрибут accept-charset=»нужная кодировка». Например:

В этом случае в независимости от кодировки страницы данные формы будут в кодировке windows-1251.

UPD

Но! Как выяснилось этот атрибут не поддерживается горячо «любимом» браузере Internet Explorer до 7 версии включительно.
В последующих реализовано, но имеются ошибки. Internet Explorer содержит ошибку при использовании кодировки ISO-8859-1, в этом случае браузер отправляет данные в кодировке Windows-1252.

К сожалению всё предыдущее решение ломается, так как этот браузер на данный момент игнорировать нельзя. Но думаю в скором будущем — через год, можно будет забыть про IE 6, так как его процент стремительно падает. Так же можно будет забыть IE7, так как к моей радости благодаря выпуску IE 8 он не обрёл такую большую популярность. Да и политика от мелкомягких к счастью сменилась. Выпускают более новые браузеры и от старых стараются отказываться.

Как бы то ни было, проблему с кодировкой кроссбраузерно можно решить следующим методом.

Подключаем в нужном месте на странице с кодировкой UTF-8 файл с формой посредством iframe. Подключаемый файл должен иметь нужную кодировку, например windows-1251. Тогда форма будет отправлять данные в нужной — windows-1251 кодировке.

Для красоты у iframe ставим высоту, ширину, чтобы форма была видна. Убираем скроллинг в любой ситуации. Убираем рамки. Это всё для того, чтобы не было видно, что форма находится в iframe.

Examples

charset attribute indicates the linked document is written in Japanese:

Browser Support

Note: All major browsers do not support the charset attribute.

Definition and Usage

HTML5 does not support the
charset attribute.

charset attribute specifies the character encoding of the linked document.

Modern browser’s default character set is ISO-8859-1.

grammar

Property Value

描述
character_set 所链接文档的字符编码。
  • UTF-8 — Unicode 字符编码
  • ISO-8859-1 — 拉丁字母表的字符编码

HTML charset attribute

charset

The purpose of the HTML charset attribute is to define the character encoding style of a given linked resource.

Supported elements

HTML charset attribute supports a, link, script element.

Syntax

Where ElementName is any supported element.

Type of value

Type of value of HTML charset attribute is a character set.

Value

A character encoding type.

Default value

There is no default value. But most of the modern browsers use ISO-8859-1 as a default value.

Supported doctypes

HTML 4.01 strict, HTML 4.01 transitional, HTML 4.01 frameset.

Example of HTML charset attribute with a

Result

View this example in a separate browser window

Example of HTML charset attribute with link

Usage of HTML charset attribute with script

Зачем указывать @charset «UTF-8»; в вашем файле CSS?

Я видел эту инструкцию как самую первую строку многочисленных файлов CSS, которые были переданы мне:

что он делает, и это правило нужно?

кроме того, если я включу этот мета-тег в свой элемент «head», это устранит необходимость его присутствия в моих CSS-файлах?

4 ответов

Он сообщает браузеру прочитать файл css как UTF-8. Это удобно, если CSS содержит символы юникода, а не только ASCII.

использование его в метатеге нормально, но только для страниц, которые включают этот мета-тег.

прочитайте о правилах разрешения набора символов CSS-файлов в спецификация W3C для CSS 2.

это полезно в контекстах, где кодировка не указана в заголовке HTTP или других метаданных, например в локальной файловой системе.

представьте себе следующую таблицу:

если читатель сохраняет файл на жесткий диск и опустить @charset правило, большинство браузеров будут читать его в кодировке языкового стандарта ОС, например Windows-1252, и вставлять â†- вместо стрелки.

к сожалению, вы не можете полагаться на этот механизм в качестве поддержки довольно . редко. И помните, что в сети HTTP-заголовок всегда будет переопределить @charset правило.

правильный правила для определения набора символов таблицы стилей в порядке приоритета:

  1. заголовок кодировки HTTP.
  2. Метку Порядка Следования Байтов.
  3. первый @charset правило.
  4. UTF-8.

последнее правило самое слабое, оно будет не работает в некоторых браузерах.
The в
устарел в HTML 5.
Следите за конфликтом между различными декларациями. Их нелегко отлаживать.

рекомендуемая литература

  • Русс Рольфе: объявление кодировок символов в CSS
  • в IANA: официальные имена для наборов символов — другие имена не допускаются; используйте имя на @charset если для одного и того же имени зарегистрировано более одного кодирование.
  • MDN: @charset . Существует таблица поддержки. Я не доверяю этому. :)
  • тест из РГ CSS.

одна из причин всегда включать спецификацию набора символов на каждой странице, содержащей текст, — избегать уязвимостей межсайтовых сценариев. В большинстве случаев набор символов UTF-8 является лучшим выбором для текста, включая HTML-страницы.

Если вы помещаете тег в свои css-файлы, вы делаете что-то неправильно. Тег принадлежит вашему HTML-код файлы и сообщает браузеру, как кодируется html, он ничего не говорит о css, который является отдельным файлом. Вы могли бы иметь совершенно разные кодировки для вашего html и css, хотя я не могу себе представить, что это была бы хорошая идея.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL