Jeu de caractères du document

Question

Qu'est-ce que c'est le jeu de caractères 'Document Character Set' pour XML et HTML, et quel est son rapport avec les encodages que j'utilise pour mes documents ?

Réponse

Par souci de simplicité et conformément à la pratique courante, lorsque nous faisons référence à Unicode dans cette FAQ, nous faisons référence au jeu de caractères défini à la fois par Unicode et ISO/IEC 10646.

Le jeu de caractères du document ou jeu de caractères de base XML et HTML (à partir de la version 4.0) est le jeu de caractères universels (UCS) défini par les normes ISO/IEC 10646 et Unicode, qui sont des codes identiques.

Cela signifie que le modèle logique décrivant comment XML et HTML sont traités est décrit en termes de jeu de caractères Unicode.

Cela ne signifie pas que tous les documents HTML et XML doivent être encodés en Unicode, mais cela signifie que ces documents ne peuvent contenir que des caractères définis par Unicode. Notez que les jeux de caractères et les encodages de caractères sont des choses différentes - par exemple, le répertoire Unicode complet peut être encodé de plus d'une façon, par exemple. UTF-8, UTF-16 et UTF-32. N'importe quel encodage de caractères peut être utilisé pour votre document tant qu'il est correctement déclaré et que les caractères qu'il représente sont un sous-ensemble du répertoire Unicode. (Il serait extrêmement inhabituel d'en trouver un qui ne soit pas un sous-ensemble.)

D'autre part, c'est une bonne idée d'utiliser un encodage Unicode dans la mesure du possible, car il simplifie de nombreux aspects de l'internationalisation Web et est largement supporté par les agents utilisateurs HTML, et par tous les processeurs XML.

Une conséquence importante du jeu de caractères du document est que les valeurs des références numériques (telles que ǵ ou ǵ pour LATIN SMALL LETTER G WITH ACUTE) sont interprétées comme des caractères Unicode, quel que soit le codage utilisé pour votre document. Il s'agit là d'une source d'erreur courante chez ceux qui ne sont pas certains de la distinction.

En passant

En pratique, tous les caractères Unicode ne peuvent pas être utilisés partout en XML et HTML. Par exemple, certains caractères sont exclus de choses comme les noms de balises d'éléments, et certains caractères de contrôle sont exclus du contenu. Notez, cependant, que XML 1.1 permet l'utilisation de beaucoup plus de caractères pour des choses telles que les noms de balises d'éléments que XML 1.0.

Information historique

HTML 2.0 a défini que tous les caractères d'un document HTML doivent être interprétés par rapport à ISO 8859-1 (également connu sous le nom d'ISO Latin 1), mais a également annoncé que toutes les versions futures de HTML utiliseront un surensemble de cela, à savoir. Unicode (ou ISO 10646), ce qui signifie qu'un grand nombre de caractères du monde sont disponibles.

Les discussions sur la bonne façon d'utiliser Unicode sur Internet (RFC 2130, avril 1997, et RFC 2070, janvier 1997) n'étaient pas encore terminées lorsque HTML 3.2 est sorti (janvier 1997), donc l'inclusion de Unicode dans HTML a dû attendre HTML 4.0 (décembre 1997).