W3docs

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–Z et a–z, les chiffres 0–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èreNuméro d'entitéNom d'entitéDescription
"&#34;&quot;guillemet
'&#39;&apos;apostrophe
&&#38;&amp;esperluette
<&#60;&lt;inférieur à
>&#62;&gt;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èreNumé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èreNumé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èresDescriptionCouvre
ISO-8859-1Latin 1Amérique du Nord, Europe occidentale, Amérique latine, les Caraïbes, Canada, Afrique.
ISO-8859-2Latin 2Europe de l'Est.
ISO-8859-3Latin 3Europe du Sud-Est, espéranto, divers autres.
ISO-8859-4Latin 4Scandinavie/Pays baltes (et autres non couverts par ISO-8859-1).
ISO-8859-5Latin/CyrilliqueLes langues qui utilisent l'alphabet cyrillique telles que le bulgare, le biélorusse, le russe et le macédonien.
ISO-8859-6Latin/ArabeLes langues qui utilisent l'alphabet arabe.
ISO-8859-7Latin/GrecLa langue grecque moderne ainsi que les symboles mathématiques dérivés du grec.
ISO-8859-8Latin/HébreuLes langues qui utilisent l'alphabet hébreu.
ISO-8859-9Latin/TurcLa langue turque. Identique à ISO-8859-1, sauf que les caractères turcs remplacent les caractères islandais.
ISO-8859-10Latin/NordiqueLes langues nordiques.
ISO-8859-15Latin 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.

Exercice

Pratique
Quelle description correspond le mieux à l'encodage ISO-8859-1 ?
Quelle description correspond le mieux à l'encodage ISO-8859-1 ?
Was this page helpful?