Unicode et HTML

Un article de Wikipédia, l'encyclopédie libre.

Unicode
Jeux de caractères
Équivalences normalisées
  • NFC (précomposée)
  • NFD (décomposée)
  • NFKC (compatibilité)
  • NFKD (compatibilité)
Propriétés et algorithmes
Codage
Autres transformations
Applications d'échanges de données

La relation entre Unicode et HTML tend à être un sujet difficile pour beaucoup de professionnels de l'informatique, d'auteurs de documents, et d'utilisateurs du web. La représentation exacte et appropriée du texte, dans les pages web, pour différentes langues et systèmes d'écriture est compliquée par les détails d'encodage de caractères, de syntaxe de langage de balisage, de police de caractères, et par la diversité des niveaux de support offerts par les navigateurs web.

Sommaire

[modifier] Caractères des documents HTML

Les pages Web sont typiquement des documents HTML ou bien XHTML. Les deux types de documents consistent, à un niveau fondamental, de caractères, qui sont des unités de graphèmes et des "grapheme-like", indépendamment de comment ils sont stockés dans les systèmes de mémoire informatique et de réseaux informatique.

Un document HTML est une séquence de caractères Unicode.

Que le document soit en HTML ou en XHTML, lorsqu'il est stocké sur un système de fichier ou transmis sur un réseau, les caractères du document sont numérisés comme séquence de bit/octets d'après un codage de caractère particulier. Le codage peut être un des UCS Transformation Format, comme UTF-8, qui peut directement coder n'importe quel caractère Unicode, ou un codage de caractère plus ancien comme Windows-1252, qui ne peut pas.

Les entités de caractères permettent de s'abstraire de l'encodage du document.

[modifier] Détermination de l'encodage de caractères

Afin d'interpréter correctement le HTML, un navigateur web doit supposer quel caractère Unicode est représenté par la forme encodée d'un document HTML. Pour ce faire, le navigateur web doit savoir quel encodage a été utilisé. Quand un document est transmis via un message MIME ou une couche de transport qui utilise un contenu de type MIME telle qu'une réponse HTTP, le message peut signaler l'encodage via un entête Content-Type, tel que Content-Type: text/html; charset=ISO-8859-1. D'autres moyens externes pour déterminer l'encodage sont autorisés, mais rarement utilisés. L'encodage peut également être déclaré à l'intérieur même du document, sous la forme d'un élément META, comme <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">. En l'absence de toute déclaration d'encodage, le défaut dépend de la configuration de la localisation du navigateur. Sur un système configuré essentiellement pour les langues ouest-européennes, ce sera généralement ISO-8859-1 ou l'une de ses extensions comme Windows-1252 ou ISO-8859-15. Pour un navigateur où les caractères multi-octets sont la norme, une forme d'autodétection sera surement appliquée. Une mauvaise connaissance du codage utilisé peut aboutir à un affichage dégradé des caractères, notamment du caractère euro.

Les encodages 8 bits locaux sont plus anciens que l'Unicode et de ce fait plus utilisés dans certaines zones géographiques. A cause de ces habitudes, notamment dans les langages de programmation et systèmes d'exploitation, et du désir d'éviter d'ennuyer les utilisateurs avec la nécessité de comprendre les nuances d'encodage, beaucoup d'éditeurs de textes utilisé par les auteurs HTML sont incapables ou non-désireux d'offrir le choix de l'encodage, lors du stockage d'un fichier sur le disque, et souvent ne permettent pas la saisie de caractères en dehors d'une plage de valeur très limitée. En conséquence, beaucoup d'auteurs HTML sont totalement inconscients des problématiques d'encodage et peuvent n'avoir aucune idée de l'encodage utilisé dans leurs documents. Il est aussi communément mal compris que la déclaration d'encodage n'affecte pas l'encodage effectif, vu qu'il ne s'agit que d'une étiquette informative qui peut ne pas être exacte.

Beaucoup de documents HTML se présentent avec des déclarations d'encodage inappropriées, ou sans aucune declaration. Afin de déterminer l'encodage dans de tels cas, beaucoup de navigateurs permettent à l'utilisateur de sélectionner manuellement un encodage dans une liste. Ils peuvent également employer un algorithme d'auto-detection qui travaille de concert avec la configuration manuelle. La surcharge manuelle peut s'appliquer à tous les documents, ou seulement à ceux pour lesquels l'encodage ne peut pas être déterminé par les declarations et/ou les "patterns octets". La présence d'une surcharge manuelle, et le fait qu'elle soit largement utilisée et adoptée par les utilisateurs, cachent l'imprécision des déclarations d'encodage sur le Web ; en conséquence de quoi, le problème risque de persister. Cela a été résolu d'une certaine manière par XHTML, qui, étant de l'XML, nécessite que la déclaration d'encodage soit précisée, et qu'aucun contournement ne soit employé quand elle est inadaptée.

[modifier] Support des navigateurs Web

De nombreux navigateurs ne sont capables d'afficher qu'une petite partie du répertoire Unicode. Voici comment votre navigateur affiche différents exemples de code Unicode :

Caractère Code HTML Nom Unicode Ce qu'affiche votre navigateur
U+0041 &#65; or &#x41; Lettre majuscule latine A A
U+00DF &#223; or &#xDF; Lettre minuscule latine s dur ß
U+00FE &#254; or &#xFE; Lettre minuscule latine thorn þ
U+0394 &#916; or &#x394; Lettre majuscule grecque delta Δ
U+0419 &#1049; or &#x419; Lettre majuscule cyrillique i bref Й
U+05E7 &#1511; or &#x5E7; Lettre hébraïque qouf ק
U+0645 &#1605; or &#x645; Lettre arabe mîm م
U+0E57 &#3671; or &#xE57; Chiffre thaï 7
U+1250 &#4688; or &#x1250; Syllabe éthiopienne qhä
U+3042 &#12354; or &#x3042; Syllabe hiragana A (japonais)
U+53F6 &#21494; or &#x53F6; Idéogramme unifié CJC-53F6 (Sinogramme simplifié shè, xié, yè, « feuille »)
U+8449 &#33865; or &#x8449; Idéogramme unifié CJC-8449 (Sinogramme traditionnel shè, xié, yè, « feuille »)
U+B5AB &#46507; or &#xB5AB; Syllabe hangûl Tteolp (coréen Ssangtikeut Eo Rieulbieup)
U+10346 &#66374; or &#x10346; Lettre gotique f 𐍆
Vous devrez peut-être installer une ou plusieurs polices multilingues comme Code2000 (et Code2001 pour quelques langues mortes, comme le gotique) pour pouvoir afficher tous les caractères ci-dessus.

On remarquera que pour afficher un caractère unicode dans un fichier web, il "suffit" d'écrire &#x suivi de son numéro, puis de ;.

Certains navigateurs web tels que Mozilla Firefox, Opera, et Safari, sont capables d'afficher des pages web multilingues en choisissant intelligemment une police pour afficher chaque caractère de la page. Ils afficheront correctement n'importe quel mélange de blocs Unicode, pour peu que les polices appropriées soient présentes dans le système d'exploitation.

Internet Explorer pour Windows est capable d'afficher le jeu complet de caractères unicode, mais, d'après le script international actuel, les caractères qui ne sont pas présents dans la première police disponible ne s'afficheront que s'ils sont présents dans les options désignées comme second choix[1]. Par exemple, seule la police Arial sera utilisée pour le texte Latin, ou Arial Unicode MS si elle est préalablement installée ; quant aux autres polices définies, elles sont ignorées[2]. Si l'encodage du caractère n'est pas reconnu, Internet Explorer affichera des rectangles en lieu et place des caractères non reconnus. C'est la raison pour laquelle les auteurs de page web doivent définir plusieurs polices qui seraient susceptibles d'être présentes sur l'ordinateur de l'utilisateur, en les déclarant manuellement comme choix prioritaire. Microsoft recommande les CSS ou feuilles de style en cascade pour déclarer les polices désirées. Aucune police n'a été définie pour les caractères du tableau ci-dessus, mais la plupart devraient être rendus correctement si les polices appropriées sont installées sur l'ordinateur.

D'anciens navigateurs, tels que Netscape Navigator 4.77, ne peuvent afficher que le texte permis par les polices associées à l'encodage indiqué par la page, et peuvent mal-interpréter les références de caractère numériques telles que le codage Unicode. Quand vous utilisez un tel navigateur, il y a peu de chances que votre ordinateur dispose de toutes ces polices ou que le navigateur puisse utiliser toutes les polices disponibles sur une même page. Le navigateur n'affichera donc pas tous les exemples ci-dessus correctement, mais pourra en afficher une partie. Puisqu'ils sont encodés selon le standard, les exemples s'afficheront correctement sur tout système aux normes s'il est équipé des polices de caractères requis. Certains systèmes, comme Windows 2000, requièrent une configuration manuelle pour afficher des caractères autres que PMB, comme la lettre gotique Fehu dans la table ci-dessus. Les polices Unicode avec une large couverture Unicode et un jeu de caractères fourni sont préférables.

[modifier] Note et références

  1. Microsoft (2006), “Globalization Step-by-Step: Fonts” at Microsoft Global Development and Computing Portal. URL retrieved on 2006-04-26.
  2. Girt By Net (2005), “Internet Explorer Makes Me ☹” at girtby.net. URL retrieved on 2006-04-26

[modifier] Voir aussi

[modifier] Bibliographie

[modifier] Liens externes

Autres langues