Набор символов документа

Intended audience: Программисты языка XHTML/HTML (использующие текстовый редактор или язык сценариев, программисты языка сценариев (PHP, JSP, и др.), программисты CSS, разработчики XSLT, менеджеры Web-проектов, и те, кому интересно, что такое набор символов документов и как он связан с кодировкой документа или страницы.

Question

Что такое "Набор символов документа" для XML и HTML, и как от связан с кодировкой, используемой в тексте документа?

Answer

С целью упрощения и следования общепринятой практике, в данной статье ЧАВО Unicode относится к набору символов, определённым совместно Unicode и ISO/IEC 10646.

Набор символов документа или базовый набор символов XML и HTML (версия 4.0) - это универсальный набор символов (стандарт UCS), определённый совместно ISO/IEC 10646 и стандартами Unicode.

Это значит, что логическая модель, описывающая процесс обработки XML и HTML, изложена в рамках набора символов Unicode.

Это не значит, что все документы HTML и XML должны быть закодированы как Unicode; это значит, что все подобные документы могут содержать лишь набор знаков, определённых Unicode. Заметьте, что набор символов и коировка - это разные понятия - например, полный набор символов Unicode может быть закодирован по-разному, как UTF-8, UTF-16 и UTF-32. Любая кодировка может быть использована для вашего документа, если она ясно обозначена и является одной из подклассов Unicode. (Хотя будет довольно тяжело найти кодировку, которая не является подклассом.)

С другой стороны, лучше везде использовать кодировку Unicode, так как Unicode облегчает переход к интернационализации и широко поддерживается прикладными процессами HTML и всеми программами обработки XML.

Важный результат набора смволов документа - это то, что содержание числового знака (как, например, ǵ и ǵ для МАЛОЙ ЛАТИНСКОЙ БУКВЫ G С АКУТОВЫМ УДАРЕНИЕМ) переводятся как знаки Unicode - не важно, какая кодировка используется для вашего документа. Различие понятий часто является причиной ошибки для тех, кому данное различие не понятно.

By the way

На практике, не все знаки Unicode могут быть использованы везде в XML и HTML. Например, определённые знаки исключены из имён тега элемента, а определённые управляющие знаки исключены из содержания. При этом заметьте, что XML 1.1 позволяет использовать намного больше знаков, в том числе и для имён тега элемента, чем XML 1.0.

Предыстория

При HTML 2.0 было определено, что все символы в документе HTML должны быть переведены относительно к ISO 8859-1 (также известному как ISO Latin 1), но также было объявлено, что при будущих версиях HTML будет использован расширенный набор, а именно Unicode (или ISO 10646), что значит - будет доступно больше мировых символов.

Дискуссии о правильном использовании Unicode в интернете ( RFC 2130, апрель 1997, иRFC 2070, январь 1997) не были закончены, когда вышла версия HTML 3.2 (январь 1997), поэтому пришлось подождать с включением Unicode в HTML до версии HTML 4.0 (декабрь 1997).