ISO-8859-1
ISO-8859-1 (Latin-1) est un encodage mono-octet hérité. Découvrez ses 256 points de code, pourquoi les navigateurs le traitent comme Windows-1252 et ses entités.
ISO-8859-1 (nommé d'après l'Organisation internationale de normalisation, et aussi connu sous le nom de Latin-1) est un encodage de caractères mono-octet hérité. Cette page explique ce qu'il est, où vous le rencontrez encore aujourd'hui, la façon surprenante dont les navigateurs le gèrent réellement, et la référence complète des caractères et entités.
Notez qu'ISO-8859-1 n'est pas l'encodage par défaut des navigateurs modernes. Depuis HTML5, le jeu de caractères par défaut est UTF-8, qui est l'encodage à utiliser pour tout nouveau document. ISO-8859-1 n'est pertinent aujourd'hui que lorsque vous lisez ou maintenez des pages plus anciennes.
Qu'est-ce qu'ISO-8859-1
ISO-8859-1 est un encodage mono-octet : chaque caractère est stocké dans exactement un octet, ce qui lui permet de représenter au maximum 256 points de code, numérotés de 0 à 255. Ces 256 positions se divisent en deux moitiés :
- 0–127 — identiques à ASCII. Les lettres latines de base
A–Zeta–z, les chiffres0–9, la ponctuation, l'espace et les caractères de contrôle se trouvent ici. - 128–255 — le supplément Latin-1 : les lettres accentuées (à, é, ñ, ü) et des symboles tels que ©, £, ¥, ½ et ÷. Ces caractères couvrent la plupart des langues d'Europe occidentale.
Étant donné qu'il est mono-octet, ISO-8859-1 ne peut pas représenter des caractères en dehors de cet ensemble — il n'existe aucun moyen d'encoder, par exemple, le signe euro €, le grec, le cyrillique ou tout script CJK. Cette limitation est précisément la raison pour laquelle l'UTF-8 multi-octet l'a remplacé. Pour une vue d'ensemble de la relation entre les encodages, consultez Jeux de caractères HTML.
Contexte historique
Dans les années 1990 et au début des années 2000, ISO-8859-1 était l'encodage de repli par défaut pour HTTP et HTML sur le Web occidental, si bien qu'un très grand nombre de pages plus anciennes ont été rédigées avec cet encodage. Vous le rencontrez encore aujourd'hui dans des fichiers HTML hérités, des bases de données, des en-têtes d'e-mails et des réponses HTTP qui n'ont pas été migrées vers UTF-8. Le reconnaître vous aide à déboguer le problème classique du « mojibake », où les caractères accentués s'affichent sous forme de symboles illisibles parce que les octets réels d'un fichier et son encodage déclaré ne concordent pas.
Le piège de Windows-1252
Voici la source de confusion la plus courante. Conformément au WHATWG Encoding Standard, lorsqu'un navigateur voit un document déclaré comme charset=ISO-8859-1, il ne le décode pas en ISO-8859-1 pur. Il le décode à la place en Windows-1252.
La différence réside dans la plage 128–159. Dans le véritable ISO-8859-1, ces positions sont des caractères de contrôle C1 non utilisés. Windows-1252 réutilise cette plage pour des caractères imprimables tels que le signe euro (€), les guillemets courbes (« », ' '), le tiret cadratin (—) et le signe de marque déposée (™). Parce que le contenu réel attendait si souvent ces caractères Windows, la norme impose que ISO-8859-1 (et ses alias latin1, iso8859-1, etc.) soit traité comme Windows-1252 pour le décodage HTML.
La conclusion pratique : une déclaration <meta charset="ISO-8859-1"> et une déclaration <meta charset="windows-1252"> se comportent de manière identique dans les navigateurs. Lorsque vous ne savez pas quel encodage hérité utilise une page, c'est généralement la raison pour laquelle les caractères dans la plage 128–159 s'affichent encore correctement.
Déclarer l'encodage des caractères
Utilisez <meta charset="UTF-8"> pour déclarer l'encodage de votre document HTML, et placez-le à l'intérieur de la section <head> :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- Your content here -->
</body>
</html>L'emplacement est important. La norme HTML exige que la déclaration <meta charset> apparaisse dans les 1024 premiers octets du document. Le navigateur commence à lire les octets avant de connaître l'encodage, donc la déclaration doit arriver assez tôt pour que le navigateur la trouve et réinterprète correctement le reste de la page. Dans l'exemple ci-dessus, <meta charset="UTF-8"> est la toute première chose à l'intérieur de <head>, confortablement dans cette fenêtre. Pour déclarer un encodage hérité à la place, vous écririez <meta charset="ISO-8859-1"> (ce que, comme noté ci-dessus, le navigateur traite comme Windows-1252).
Caractères réservés en HTML
Certains caractères sont réservés en HTML car ils sont utilisés pour constituer le langage HTML. Par exemple, vous ne pouvez pas utiliser les signes supérieur ou inférieur dans votre texte, car le navigateur tentera de les interpréter comme du HTML. Utilisez le nom d'entité ou le numéro d'entité lorsque vous souhaitez afficher l'un des caractères réservés.
Consultez la liste des caractères réservés dans le tableau ci-dessous :
| Caractère | Numéro d'entité | Nom d'entité | Description |
|---|---|---|---|
| " | " | " | guillemet |
| ' | ' | ' | apostrophe |
| & | & | & | esperluette |
| < | < | < | inférieur à |
| > | > | > | supérieur à |
Pour la référence complète des références de caractères nommés, consultez Entités HTML.
Symboles ISO 8859-1
| Caractère | Numéro d'entité | Nom d'entité | Description |
|---|---|---|---|
| espace insécable | |||
| ¡ | ¡ | ¡ | point d'exclamation renversé |
| ¢ | ¢ | ¢ | cent |
| £ | £ | £ | livre sterling |
| ¤ | ¤ | ¤ | devise |
| ¥ | ¥ | ¥ | yen |
| ¦ | ¦ | ¦ | barre verticale brisée |
| § | § | § | paragraphe |
| ¨ | ¨ | ¨ | tréma d'espacement |
| © | © | © | droit d'auteur |
| ª | ª | ª | indicateur ordinal féminin |
| « | « | « | guillemet angulaire gauche |
| ¬ | ¬ | ¬ | négation |
| | | | trait d'union conditionnel |
| ® | ® | ® | marque déposée |
| ¯ | ¯ | ¯ | macron d'espacement |
| ° | ° | ° | degré |
| ± | ± | ± | plus ou moins |
| ² | ² | ² | exposant 2 |
| ³ | ³ | ³ | exposant 3 |
| ´ | ´ | ´ | accent aigu d'espacement |
| µ | µ | µ | micro |
| ¶ | ¶ | ¶ | paragraphe |
| · | · | · | point médian |
| ¸ | ¸ | ¸ | cédille d'espacement |
| ¹ | ¹ | ¹ | exposant 1 |
| º | º | º | indicateur ordinal masculin |
| » | » | » | guillemet angulaire droit |
| ¼ | ¼ | ¼ | fraction 1/4 |
| ½ | ½ | ½ | fraction 1/2 |
| ¾ | ¾ | ¾ | fraction 3/4 |
| ¿ | ¿ | ¿ | point d'interrogation renversé |
| × | × | × | multiplication |
| ÷ | ÷ | ÷ | division |
Caractères ISO 8859-1
| Caractère | Numéro d'entité | Nom d'entité | Description |
|---|---|---|---|
| À | À | À | A majuscule, accent grave |
| Á | Á | Á | A majuscule, accent aigu |
| Â | Â | Â | A majuscule, accent circonflexe |
| Ã | Ã | Ã | A majuscule, tilde |
| Ä | Ä | Ä | A majuscule, tréma |
| Å | Å | Å | A majuscule, rond en chef |
| Æ | Æ | Æ | AE majuscule |
| Ç | Ç | Ç | C majuscule, cédille |
| È | È | È | E majuscule, accent grave |
| É | É | É | E majuscule, accent aigu |
| Ê | Ê | Ê | E majuscule, accent circonflexe |
| Ë | Ë | Ë | E majuscule, tréma |
| Ì | Ì | Ì | I majuscule, accent grave |
| Í | Í | Í | I majuscule, accent aigu |
| Î | Î | Î | I majuscule, accent circonflexe |
| Ï | Ï | Ï | I majuscule, tréma |
| Ð | Ð | Ð | Eth majuscule, islandais |
| Ñ | Ñ | Ñ | N majuscule, tilde |
| Ò | Ò | Ò | O majuscule, accent grave |
| Ó | Ó | Ó | O majuscule, accent aigu |
| Ô | Ô | Ô | O majuscule, accent circonflexe |
| Õ | Õ | Õ | O majuscule, tilde |
| Ö | Ö | Ö | O majuscule, tréma |
| Ø | Ø | Ø | O majuscule, barre oblique |
| Ù | Ù | Ù | U majuscule, accent grave |
| Ú | Ú | Ú | U majuscule, accent aigu |
| Û | Û | Û | U majuscule, accent circonflexe |
| Ü | Ü | Ü | U majuscule, tréma |
| Ý | Ý | Ý | Y majuscule, accent aigu |
| Þ | Þ | Þ | Thorn majuscule, islandais |
| ß | ß | ß | s minuscule sharp, allemand |
| à | à | à | a minuscule, accent grave |
| á | á | á | a minuscule, accent aigu |
| â | â | â | a minuscule, accent circonflexe |
| ã | ã | ã | a minuscule, tilde |
| ä | ä | ä | a minuscule, tréma |
| å | å | å | a minuscule, rond en chef |
| æ | æ | æ | ae minuscule |
| ç | ç | ç | c minuscule, cédille |
| è | è | è | e minuscule, accent grave |
| é | é | é | e minuscule, accent aigu |
| ê | ê | ê | e minuscule, accent circonflexe |
| ë | ë | ë | e minuscule, tréma |
| ì | ì | ì | i minuscule, accent grave |
| í | í | í | i minuscule, accent aigu |
| î | î | î | i minuscule, accent circonflexe |
| ï | ï | ï | i minuscule, tréma |
| ð | ð | ð | eth minuscule, islandais |
| ñ | ñ | ñ | n minuscule, tilde |
| ò | ò | ò | o minuscule, accent grave |
| ó | ó | ó | o minuscule, accent aigu |
| ô | ô | ô | o minuscule, accent circonflexe |
| õ | õ | õ | o minuscule, tilde |
| ö | ö | ö | o minuscule, tréma |
| ø | ø | ø | o minuscule, barre oblique |
| ù | ù | ù | u minuscule, accent grave |
| ú | ú | ú | u minuscule, accent aigu |
| û | û | û | u minuscule, accent circonflexe |
| ü | ü | ü | u minuscule, tréma |
| ý | ý | ý | y minuscule, accent aigu |
| þ | þ | þ | thorn minuscule, islandais |
| ÿ | ÿ | ÿ | y minuscule, tréma |
Variantes d'ISO-8859-1
ISO-8859-1 n'est que la première partie de la grande famille ISO 8859. Chaque partie conserve la moitié inférieure ASCII (0–127) mais remplace la moitié supérieure (128–255) pour couvrir un groupe différent de langues ou de scripts. Les parties les plus courantes sont listées ci-dessous.
| Jeu de caractères | Description | Couvre |
|---|---|---|
| ISO-8859-1 | Latin 1 | Amérique du Nord, Europe occidentale, Amérique latine, les Caraïbes, Canada, Afrique. |
| ISO-8859-2 | Latin 2 | Europe de l'Est. |
| ISO-8859-3 | Latin 3 | Europe du Sud-Est, espéranto, divers autres. |
| ISO-8859-4 | Latin 4 | Scandinavie/Pays baltes (et autres non couverts par ISO-8859-1). |
| ISO-8859-5 | Latin/Cyrillique | Les langues qui utilisent l'alphabet cyrillique telles que le bulgare, le biélorusse, le russe et le macédonien. |
| ISO-8859-6 | Latin/Arabe | Les langues qui utilisent l'alphabet arabe. |
| ISO-8859-7 | Latin/Grec | La langue grecque moderne ainsi que les symboles mathématiques dérivés du grec. |
| ISO-8859-8 | Latin/Hébreu | Les langues qui utilisent l'alphabet hébreu. |
| ISO-8859-9 | Latin/Turc | La langue turque. Identique à ISO-8859-1, sauf que les caractères turcs remplacent les caractères islandais. |
| ISO-8859-10 | Latin/Nordique | Les langues nordiques. |
| ISO-8859-15 | Latin 9 (Latin 0) | Similaire à ISO-8859-1, mais remplace certains symboles moins courants par le signe euro et quelques autres caractères manquants. |
Les navigateurs modernes détectent automatiquement ou utilisent UTF-8 par défaut lorsqu'aucun encodage n'est spécifié. Les encodages hérités comme ISO-8859-1 sont principalement pris en charge pour assurer la compatibilité ascendante avec les anciennes pages Web. Pour les nouveaux projets, utilisez toujours UTF-8 pour garantir une prise en charge complète d'Unicode et une cohérence multiplateforme.
Voir aussi Jeux de caractères HTML, HTML ASCII et Entités HTML.