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

Питання

Що таке «Набір символів документа» для XML і HTML, та як він пов’язаний з кодуванням, яке використовується в тексті документа?

Відповідь

Що набір символів і кодування – це різні поняття – наприклад, повний набір символів Unicode може бути закодований по-різному, як UTF-8, UTF-16 I UTF-32.

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

Це означає, що логічна модель, що описує процес обробки XML і HTML, викладена в рамках набору символів Unicode.

Це не означає, що всі документи XML і HTML повинні бути закодовані як Unicode, це значить, що всі подібні документи можуть містити лише набір знаків, визначених Unicode. Прийміть до уваги, що набір символів і кодування – це різні поняття – наприклад, повний набір символів Unicode може бути закодований по-різному, як UTF-8, UTF-16 I UTF-32. Будь-яке кодування може бути використане для вашого документу, якщо воно ясно позначене і є одним із підкласів Unicode. (Хоча буде досить важко знайти кодування, яке не є підкласом).

З іншої сторони, краще усюди використовувати кодування Unicode, так як Unicode полегшує перехід до інтернаціоналізації і широко підтримується прикладними процесами HTML та всіма програмами обробки XML.

Важливий результат набору символів документа – це те, що вміст числового знаку (як, наприклад, ǵ and ǵ для малої латинської літери G з акутовим наголосом) перекладається як знак Unicode – не зважаючи на те, яке кодування використовується для вашого документа. Різниця понять часто є причиною помилки для тих, кому така різниця не зрозуміла.

Доречі

На практиці, не всі знаки 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).