Unicode и HTML

редактировать

.

связь между символами Unicode и HTML

.

веб-страницами, созданными с использованием языка разметки гипертекста (HTML ) может содержать многоязычный текст, представленный универсальным набором символов Unicode . Ключом к взаимосвязи между Unicode и HTML является взаимосвязь между «набором символов документа», который определяет набор символов, которые могут присутствовать в документе HTML и присваивают им числа, и «внешней кодировкой символов» или «кодировкой», используемой для кодировать данный документ как последовательность байтов.

В RFC 1866, исходном стандарте HTML 2.0, набор символов документа был определен как ISO-8859-1. Он был расширен до ISO 10646 (который в основном эквивалентен Unicode) в RFC 2070. Он не меняется между документами на разных языках или созданными на разных платформах. Внешняя кодировка символов выбирается автором документа (или программным обеспечением, которое автор использует для создания документа) и определяет, как байты используются для хранения и / или передачи карты документа в символы из набора символов документа. Символы, отсутствующие в выбранной внешней кодировке символов, могут быть представлены ссылками на символьные сущности.

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

Содержание
  • 1 символы документа HTML
    • 1.1 Кодировка символов
    • 1.2 Цифровой символ ссылки
    • 1.3 Именованные объекты символов
  • 2 Определение кодировки символов
    • 2.1 Информация о кодировке
    • 2.2 Кодировка по умолчанию
    • 2.3 Тенденции кодирования
    • 2.4 Метка порядка байтов / анализ Unicode
    • 2.5 Переопределение кодировки
  • 3 Поддержка веб-браузера
  • 4 Частота использования
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
HTML-символы документа

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

Документ HTML - это последовательность символов Unicode. Более конкретно, документы HTML 4.0 должны состоять из символов в наборе символов документа HTML: репертуар символов, в котором каждому символу присваивается уникальный неотрицательный целочисленный код. Этот набор определен в HTML 4.0 DTD, который также устанавливает синтаксис (допустимые последовательности символов), позволяющий создавать действительный документ HTML. Набор символов документа HTML для HTML 4.0 состоит из большинства, но не всех символов, совместно определенных в Unicode и ISO / IEC 10646: универсальный набор символов (UCS).

Подобно HTML-документам, XHTML-документ представляет собой последовательность символов Unicode. Однако документ XHTML - это документ XML, который, хотя и не имеет явного уровня «символа документа» из абстракции , тем не менее полагается на аналогичное определение допустимых символов, которое охватывает большинство, но не все определения символов Unicode / UCS. Наборы, используемые HTML и XHTML / XML, немного отличаются, но эти различия мало влияют на обычного автора документа.

Независимо от того, является ли документ HTML или XHTML, при хранении в файловой системе или передаче по сети символы документа кодируются как последовательность бит октеты (байты ) в соответствии с конкретной кодировкой символов. Эта кодировка может быть либо форматом преобразования Unicode, например UTF-8, который может напрямую кодировать любой символ Unicode, либо устаревшей кодировкой, например Windows-1252, что не может. Однако даже при использовании кодировок, которые не поддерживают все символы Unicode, в закодированном документе могут использоваться ссылки на числовые символы. Например, (☺) используется для обозначения символа улыбающегося лица в наборе символов Unicode.

Кодировка символов

Чтобы поддерживать все символы Unicode без обращения к числовым ссылкам на символы, веб-страница должна иметь кодировку, покрывающую весь Unicode. Наиболее популярным является UTF-8, где символы ASCII, такие как английские буквы, цифры и некоторые другие распространенные символы, сохраняются без изменений по сравнению с ASCII. Это делает код HTML (например, и) неизменным по сравнению с ASCII. Символы вне диапазона ASCII хранятся в 2–4 байтах. Также можно использовать UTF-16, где большинство символов хранятся в виде двух байтов с различной порядком байтов, что поддерживается современными браузерами, но используется реже.

Ссылки на числовые символы

Чтобы обойти ограничения устаревших кодировок, HTML разработан таким образом, чтобы можно было представлять символы из всего Юникода внутри HTML-документа с помощью ссылка на числовой символ : последовательность символов, которая явно обозначает кодовую точку Unicode представляемого символа. Ссылка на символ принимает форму #N;, где N- это либо десятичное число для кодовой точки Unicode, либо шестнадцатеричное число, в этом случае оно должен иметь префикс x. Символы, составляющие числовую ссылку на символы, универсально представлены в любой кодировке, одобренной для использования в Интернете.

Например, кодовая точка Unicode, такая как U + 5408, которая соответствует определенному китайскому символу, должна быть преобразована в десятичное число, которому предшествует #, а за ним следует ;, например: , что дает следующее: 合 (если он не похож на китайский иероглиф, см. Шаблон: специальные символы ).

Поддержка шестнадцатеричного числа в этом контексте появилась позже, поэтому в старых браузерах могут возникать проблемы с отображением символов, на которые ссылаются шестнадцатеричные числа, но у них, вероятно, возникнут проблемы с отображением символов Юникода над кодовой точкой 255 в любом случае. Чтобы обеспечить лучшую совместимость со старыми браузерами, по-прежнему распространенной практикой является преобразование шестнадцатеричной кодовой точки в десятичное значение (например, вместо ).

Именованные символьные сущности

В HTML 4 существует стандартный набор из 252 именованных символьных сущностей для символов - некоторые общие, некоторые неясные - которые либо не встречаются в определенных кодировках символов, либо являются разметкой чувствительны в некоторых контекстах (например, угловые скобки и кавычки). Хотя на любой символ Юникода можно ссылаться по его числовой кодовой точке, некоторые авторы HTML-документов предпочитают использовать вместо них эти именованные сущности, где это возможно, поскольку они менее загадочны и лучше поддерживались ранними браузерами.

Символьные сущности могут быть включены в документ HTML с помощью ссылок на сущности, которые принимают форму EntityName;, где EntityName- это имя сущности. Например, -, как и -или -, представляет U + 2014: длинное тире символ " - "даже если используемая кодировка символов не содержит этого символа.

Полный список см.: Список ссылок на символы XML и HTML.

Определение кодировки символов

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

Информация о кодировке

Когда документ передается через сообщение MIME или транспорт, который использует типы содержимого MIME, такие как ответ HTTP, сообщение может сигнализировать о кодировании через заголовок Content-Type, например Content-Type: text / html; charset = UTF-8. Другие внешние средства объявления кодировки разрешены, но используются редко. Если в документе используется кодировка Unicode, информация о кодировке также может быть представлена ​​в виде метки порядка байтов. Наконец, кодировку можно объявить с помощью синтаксиса HTML. Для сериализации text / htmlтогда, пока страница закодирована с расширением ASCII (например, UTF-8, и, следовательно, не if страница использует UTF-16 ), элемент meta, например или (начиная с HTML5, можно использовать ) . Для HTML-страниц, сериализованных как XML, то параметры объявления должны либо полагаться на кодировку по умолчанию (которая для документов XML - это UTF-8), либо использовать объявление кодировки XML. Атрибут meta не играет роли в HTML, обслуживаемом как XML.

Кодировка значения по умолчанию

Кодировка по умолчанию применяется, когда нет объявления внешней или внутренней кодировки, а также нет отметки порядка байтов. Хотя кодировка по умолчанию для HTML-страниц, обслуживаемых как XML, должна быть UTF-8, кодировка по умолчанию для обычная веб-страница (то есть: для HTML-страниц, сериализованных как text / html) зависит от локализации браузера. Для системы, настроенной в основном для западноевропейских языков, это обычно будет Windows -1252. Для Кирилла c алфавитными языковыми стандартами, по умолчанию обычно используется Windows-1251. Для браузера из места, где преобладают устаревшие кодировки многобайтовых символов, вероятно, будет применена какая-либо форма автоопределения.

Тенденции кодирования

Из-за унаследованных 8-битных текстовых представлений в языках программирования и операционных системах и стремлении избежать обременения пользователей необходимость понимать нюансы кодирования, многие текстовые редакторы, используемые авторами HTML, не могут или не хотят предлагать выбор кодировок при сохранении файлов на диск и часто даже не позволяют вводить символы за пределами очень ограниченного диапазона. Следовательно, многие авторы HTML не знают о проблемах с кодировкой и могут не иметь представления о том, какую кодировку фактически используют их документы. Недоразумения, такие как вера в то, что объявление кодировки влияет на изменение фактической кодировки (в то время как на самом деле это просто ярлык, который может быть неточным), также является причиной такого отношения редактора. Другим фактором, способствующим тому же направлению, является появление UTF-8, который значительно снижает потребность в других кодировках, и, таким образом, современные редакторы имеют тенденцию по умолчанию использовать UTF-8, как рекомендовано спецификацией HTML5.

Метка порядка байтов / анализ Unicode

Для обеих сериализаций HTML (тип контента «текст / html» и контент / тип «приложение / xhtml + xml») метка порядка байтов ( BOM) - эффективный способ передачи информации о кодировке в HTML-документе. Для UTF-8 спецификация не является обязательной, а для кодировок UTF-16 и UTF-32 она обязательна. (Примечание: UTF-16 и UTF-32 без спецификации формально известны под разными именами, это разные кодировки, поэтому требуется некоторая форма объявления кодировки - см. UTF-16BE, UTF- 16LE, UTF-32LE и UTF-32BE. Использование символа спецификации (U + FEFF) означает, что кодировка автоматически объявляется для любого приложения обработки. Приложениям обработки нужно только искать начальные 0x0000FEFF, 0xFEFF или 0xEFBBBF в потоке байтов, чтобы идентифицировать документ как закодированные в UTF-32, UTF-16 или UTF-8 соответственно. Для этих кодировок не требуются никакие дополнительные механизмы метаданных, поскольку метка порядка байтов включает всю информацию, необходимую для обработки приложений. В большинстве случаев символ метки порядка байтов обрабатывается путем редактирования приложений отдельно от других символов, поэтому существует небольшой риск того, что автор удалит или иным образом изменит метку порядка байтов, чтобы указать неправильную кодировку (что может случиться, когда кодировка объявлена ​​в Английский / латинский алфавит). Если в документе отсутствует метка порядка следования байтов, то тот факт, что первый непустой печатаемый символ в документе HTML должен быть "<" (U+003C) can be used to determine a UTF-8/UTF-16/UTF-32 encoding.

Переопределение кодировки

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

Для документов HTML, которые являются текстом / htmlсериализованный, ручное переопределение может применяться ко всем документам или только к тем, кодировка которых не может быть определена путем просмотра объявлений и / или байтовых шаблонов. Тот факт, что ручное переопределение присутствует и широко используется, препятствует принятию точных объявления кодировки в Интернете; поэтому проблема, скорее всего, не исчезнет. Но обратите внимание: шляпа Internet Explorer, Chrome и Safari - для сериализации как XML, так и text / html- не разрешают переопределение кодировки всякий раз, когда страница включает спецификацию.

Для документов HTML, сериализованных с предпочтительная метка XML - application / xhtml + xml, ручное переопределение кодировки не допускается. Переопределение кодировки такого XML-документа означало бы, что документ перестал быть XML, поскольку для XML-документов фатальная ошибка - иметь объявление кодировки с обнаруживаемыми ошибками. В настоящее время браузеры Gecko, такие как Firefox, соблюдают это правило, тогда как большинство других распространенных браузеров, поддерживающих HTML как XML, например браузеры Webkit (Chrome / Safari), позволяют вручную переопределять кодировку документов XHTML.

Поддержка веб-браузера

Многие браузеры способны отображать лишь небольшую часть полного репертуара Unicode. Вот как ваш браузер отображает различные кодовые точки Unicode:

Пример поддержки веб-браузером символов Unicode
CharacterHTML char refИмя UnicodeКакое у вас браузер отображает
U + 0041Aили ALatin заглавная буква A A
U + 00DFßили ßСтрочная латинская буква Sharp S ß
U + 00FEþили þСтрочная латинская буква Thorn þ
U + 0394Δили ΔГреческий заглавная буква Дельта Δ
U + 017DŽили Žзаглавная латинская буква Z с гачек Ž
U + 0419или Кириллица заглавная буква Короткая I Й
U + 05E7קили קИврит буква Qof ק
U + 0645مили مарабский буква Meem م
U + 0E57или Тайский цифра 7
U + 1250или Ge'ez слог
U +3042или Hiragana буква A (японский)
U + 53F6или CJK Unified Ideograph -53F6 (Упрощенный гл. inese «Лист»)
U + 8449или CJK Unified Ideograph -8449 (Традиционный китайский «Лист»)
U + B5ABили Hangul слог Tteolp (корейский «Ssangtikeut Eo Rieulbieup»)
U + 16A0или Руническая буква Феху
U + 0D37или Малаялам буква ഷ (ṣha)
U + 1F602😂или 😂Смайлик со слезами радости 😂
Для отображения всех вышеперечисленных символов вам может потребоваться установить один или несколько больших многоязычных шрифтов., например Code2000.

Некоторые веб-браузеры, такие как Mozilla Firefox, Opera, Safari и Internet Explorer (из версии 7), могут отображать многоязычные веб-страницы, разумно выбирая шрифт для отображения каждого отдельного символа на странице. Они будут правильно отображать любое сочетание блоков Unicode, если соответствующие шрифты присутствуют в операционной системе.

старых браузерах, таких как Netscape Navigator 4.77 и Internet Explorer 6, могут отображать только текст, поддерживаемый текущим шрифтом, связанным с кодировкой символов страницы, и могут неверно интерпретировать числовые ссылки на символы как ссылки на значения кода в текущей кодировке символов, а не ссылки на кодовые точки Unicode. Когда вы используете такой браузер, маловероятно, что на вашем компьютере есть все эти шрифты или что браузер может использовать все доступные шрифты на одной странице. В результате браузер не будет правильно отображать текст в приведенных выше примерах, хотя может отображать их часть. Однако, поскольку они закодированы в соответствии со стандартом, они будут правильно отображаться в любой системе, которая соответствует требованиям и имеет доступные символы. Кроме того, те символы, которым присвоены имена для использования в ссылках на именованные сущности, вероятно, будут более доступны, чем другие.

Для отображения символов за пределами базовой многоязычной плоскости, таких как готическая буква faihu, которая является вариантом рунической буквы fehu в таблице выше, в некоторых системах (например, Windows 2000) требуется ручная корректировка их настроек.

Частота использования

Согласно внутренним данным веб-индекса Google, в декабре 2007 года кодировка UTF-8 Unicode стала самой часто используемая кодировка на веб-страницах, превосходящая как ASCII (США), так и 8859-1 / 1252 (западноевропейские).

См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-20 11:00:37
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте