En informatique, la norme ISO 8859-1, dont le nom complet est ISO/CEI 8859-1, et qui est souvent appelée Latin-1, forme la première partie de ISO/CEI 8859, une norme internationale de l’Organisation internationale de normalisation et de la CEI pour le codage des caractères.
Elle définit ce qu’elle appelle l’alphabet latin numéro 1, qui consiste en 191 caractères de l’alphabet latin, chacun d’entre eux étant codé sur un octet (soit 8 bits). ISO 8859-1 reprend le codage des caractères imprimables de l’US-ASCII.
Dans les pays occidentaux, cette norme était utilisée par de nombreux systèmes d’exploitation, dont UNIX, Windows ou AmigaOS. Elle a donné lieu à quelques extensions et adaptations, dont Windows-1252 et ISO/CEI 8859-15. La distinction entre ASCII, ISO 8859-1, ISO 8859-15, Windows-1252 et MacRoman est une source de confusion parmi les développeurs de programmes informatiques. Le Multinational Character Set créé par Digital Equipment Corporation pour le terminal informatique VT220 est considéré comme à la fois l’ancêtre d’ISO 8859-1 et d’Unicode.. Après avoir été quelque temps en concurrence avec Unicode, , au profit de ce dernier.
Principe
En première approximation, le jeu de caractères codés sur 8 bits de la norme ISO/CEI 8859-1 est une extension du jeu de caractères codés sur 7 bits de la norme américaine US-ASCII (qui est une des variantes de la norme de base ISO/CEI 646). Cependant ce codage normalisé au niveau mondial par l’ISO et la CEI n’assigne aucun caractère de contrôle ni aucun autre caractère dans les positions réservées des plages 0x00 à 0x1F et 0x7F à 0x9F.
Il ajoute de nombreux caractères latins manquant dans l’alphabet latin de base défini dans l’US-ASCII (ce qui a permis de déprécier ou rendre obsolètes de nombreuses variantes nationales de la norme ISO 646), ainsi que quelques autres signes de ponctuation ou symboles, ce qui lui permet de recouvrir les caractères nécessaires à l’écriture de nombreuses langues, pour nombre d’entre elles des langues d’Europe occidentale, avec parmi elles des langues nationales officielles comme l’albanais, l’allemand (sauf la lettre ), l’anglais, le danois (sauf les lettres ), l’espagnol, le finnois (sauf les lettres ), le français (sauf les lettres ), l’islandais (sauf les signes de ponctuation ), le gaélique irlandais, l’italien, le latin liturgique (sans les diacritiques du latin moderne), le luxembourgeois, le néerlandais (sauf les lettres ), le norvégien (sauf les lettres ), le portugais, le romanche, le suédois, et encore de nombreuses autres langues régionales ou minoritaires comme le basque, le bas-saxon, le breton, le catalan, le corse, le féroïen, le gallo, le gaélique écossais, le galicien, l’occitan, le picard, le rromani moderne (mais pas le pan-vlax ni l’alphabet romani standard), le sarde, le vénitien, ou le wallon. Des langues d’autres régions du monde sont également couvertes comme l’afrikaans, l’indonésien, le malais, le swahili, le malgache (sauf les lettres ), ou le wolof, ainsi que la plupart des créoles et pidgins qui se sont développés en grande partie sur les bases des langues précédentes, tels que le bichelamar, le capverdien (sauf les lettres ), le créole haïtien, le filipino (souvent improprement appelé tagalog) ou le mauricien.
Cette norme est donc utilisée sur tous les continents, en Europe de l’Ouest, en Amérique, et dans une grande partie de l'Afrique ou de l’Océanie ainsi que certains pays d’Asie du Sud-Est.
Cependant elle ignore quelques caractères européens comme le symbole de l’euro € (qui n’existait pas encore lorsque ce jeu a été normalisé) ou certaines des lettres normalement nécessaires à certaines langues théoriquement couvertes (comme les lettres « œ », « Œ » et « Ÿ » en français, ou les lettres « š » et « Š » en tchèque) : le jeu de caractères universel des normes ISO/CEI 10646 et Unicode (ou plus rarement le jeu de caractères codés ISO/CEI 8859-15) permet de pallier ces absences. Les lettres françaises œ et Œ avaient des places prévues mais n’ont finalement pas été incluses dans ISO/CEI 8859-1, car au contraire du représentant canadien québécois dans le groupe de travail (GT), les deux représentants français s’y opposèrent : l’un estimait à tort qu’il s’agissait d’une simple ligature typographique, et l’autre était employé par un grand fabricant de matériel informatique français qui ne les avait pas incluses dans ses imprimantes bien qu’elles fussent encodées dans ISO/CEI 6937 depuis 1983.
La plupart des 191 caractères codés dans la norme ISO/CEI 8859-1 sont représentés sous forme de glyphes (œil) dans le tableau suivant, à l’exception de trois d’entre eux (décrits après la table). Les titres des lignes et des colonnes indiquent les valeurs hexadécimales correspondant aux positions codées assignées à chaque caractère, par exemple, la valeur hexadécimale de la position codée assignée à la lettre « L » est 0x4C, soit 01001100 en binaire ou 76 en décimal.
ISO/CEI 8859-1 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 0x positions inutilisées 1x 2x SP ! " # $ % & ' ( ) * + , - . / 3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4x @ A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z [ \ ] ^ _ 6x ` a b c d e f g h i j k l m n o 7x p q r s t u v w x y z { | } ~ 8x positions inutilisées 9x Ax NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯ Bx ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ Cx À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Dx Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß Ex à á â ã ä å æ ç è é ê ë ì í î ï Fx ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
Dans cette table : La position 0x20 en hexadécimal (32 en décimal) est assignée au caractère de l’« espace » (elle est souvent représentée par SP, de en anglais). La position 0xA0 en hexadécimal (160 en décimal) est assignée au caractère de l'espace insécable (elle est souvent représentée par NBSP, de en anglais). La position 0xAD en hexadécimal (173 en décimal) est assignée au caractère de formatage indiquant la position d’une possible coupure de mot : il reste normalement invisible lorsqu’il est inséré au milieu d’un mot mais il n’apparaît comme un tiret de coupure de mot que si un saut de ligne est réalisé à cette position ; le tiret est alors accolé après le début du mot coupé et sur la même ligne (il est souvent représenté par SHY, de en anglais). Les positions 0x00 à 0x1F en hexadécimal (0 à 31 en décimal) et 0x7F à 0x9F en hexadécimal (127 à 159 en décimal) ne sont assignées à aucun caractère dans le codage normalisé ISO/CEI 8859-1 (leur utilisation éventuelle et leur interprétation dépendent des applications). Les 188 caractères imprimables (hors des espaces) sont : les symboles issus de signes diacritiques :^ ` ~ ¨ ¯ ´ ¸ les signes séparateurs symboliques :_ \ | ¦ les signes de ponctuation séparateurs :' " « » : ; ! ¡ ? ¿ § ¶ les signes de ponctuation souvent utilisés aussi comme signes mathématiques ou numériques :- , . · * / ( ) [ ] { } les opérateurs mathématiques et signes numériques :+ ± ¬ × ÷ < = > les exposants et fractions numériques :¹ ² ³ ¼ ½ ¾ les dix chiffres latins de base :0 1 2 3 4 5 6 7 8 9 quelques symboles monétaires (n'y figure pas le symbole de l'euro, apparu après la norme) :$ ¢ £ ¤ ¥ les symboles fréquents d’abréviations et d’unités :# % @ & © ® ° µ les paires de lettres latines majuscules et minuscules (bien qu'y figure la ligature Ææ rare en français, il y manque celle du Œœ courante en français) :Aa Àà Áá Ââ Ãã Ää Åå ÆæBb Cc Çç Dd ÐðEe Èè Éé Êê ËëFf Gg HhIi Ìì Íí Îî Ïï JjKk Ll Mm Nn ÑñOo Òò Óó Ôô Õõ Öö ØøPp Qq Rr Ss Tt ÞþUu Ùù Úú Ûû Üü Vv WwXx Yy Ýý Zz les autres lettres latines minuscules et variantes, codées sans majuscule correspondante (il manque notamment le Ÿ utilisé rarement en français) :ª º ß ÿ
ISO/CEI 8859-1 par rapport à ISO-8859-1
L’IANA a validé, pour une utilisation sur Internet, le codage ISO-8859-1 (remarquez le tiret supplémentaire), un sur-ensemble de l'ISO/CEI 8859-1.
Ce jeu de caractères codés, ou page de codes, supplée le jeu de caractère codé ISO/CEI 8859-1 en assignant des caractères de contrôle aux positions hexadécimales des plages 0x00 à 0x1F, et 0x7F à 0x9F. On obtient de cette manière 256 caractères recouvrant toutes les positions possibles codées sur .
L’IANA autorise l’utilisation des alias enregistrés suivants pour ISO-8859-1 (la casse mentionnée peut être changée librement car elle n’est pas significative) : ISO_8859-1:1987 ISO_8859-1 ISO-8859-1 iso-ir-100 csISOLatin1 latin1 l1 IBM819 CP819
Le nom Latin-1 est une appellation informelle non reconnue par les organismes de normalisation ISO, CEI ou IANA, mais utilisée par certains logiciels.
Le tableau suivant montre l’ISO-8859-1, avec les abréviations représentant les caractères de contrôle et les espaces.
Il existe d’autres parties de la norme ISO/CEI 8859 à laquelle correspond un jeu de caractères codé validé par l’IANA, par exemple l’ISO/CEI 8859-10 (alphabet latin 6) ressemble fortement au jeu de caractères codés ISO-8859-10.
Chacune des parties de la norme ISO/CEI 8859 définit un jeu de caractères codés sur 8 bits de la même manière : elle assigne les caractères graphiques codés sur 7 bits de la norme ISO/CEI 646 (dans sa version américaine ASCII la plus courante) aux positions codées dans la plage hexadécimale 0x20 à 0x7E, ainsi que 96 caractères supplémentaires aux positions codées dans la plage hexadécimale de 0xA0 à 0xFF, pour un total de 191 caractères codés.
L’IANA définit les jeux de caractères codés « ISO-8859-x » selon la partie correspondante de la norme ISO/CEI 8859, en assignant en plus tous les caractères de contrôle « C0 » de la norme ISO 646 aux positions de la plage hexadécimale 0x00 à 0x1F et à la position hexadécimale 0x7F, ainsi que des caractères de contrôle « C1 » supplémentaires aux positions de la plage hexadécimale de 0x7F à 0x9F, offrant ainsi un ensemble de 256 caractères codés.
Le jeu de caractères codés ISO-8859-1 est le seul, parmi tous ces ensembles de jeux de caractères codés, dont la codification sur 8 bits soit équivalente aux 256 premiers caractères codés du jeu universel de caractères, défini dans les normes ISO/CEI 10646 et Unicode.
Jeux de caractères codés apparentés
Windows-1252
Dans la page de codes 1252 définie et utilisée dans Microsoft Windows, quelques caractères ont été assignés aux positions codées dans la plage hexadécimale 0x80 à 0x9F. Cette extension remplace ou annule tous les caractères de contrôle C1 qui sont assignés à ces positions dans le jeu de caractères codés ISO-8859-1 et réservés dans la norme ISO/CEI 8859-1.
Cette page de codes est enregistrée dans la base de données des jeux de caractères codés de l’IANA, pour son usage dans les logiciels et sur Internet, sous le nom Windows-1252.
ISOLatin1Encoding
PostScript prédéfinit une variante d'ISO/CEI 8859-1, appelée improprement ISOLatin1EncodingPostScript Language Reference, édition, Adobe, 1999. Consulter la description détaillée de ISOLatin1encoding dans l’annexe E.5 Standard Latin Character Set (pp. 779–783) et la table de l’annexe E.7 ISOLatin1Encoding Encoding Vector (p. 785)., dans laquelle le caractère codé en position 140 (0x8C en hexadécimal) est l’apostrophe gauche ( ‘ ), au lieu de l’accent grave ( ` ).
Cet encodage n’assigne aucun caractère de contrôle C0 ou C1 dans les positions 0x00 à 0x1F et 0x7F à 0x8F. Cependant, il définit certains caractères supplémentaires dans les positions inutilisées entre 0x90 et 0x9F (mais d’une façon différente de la variante Windows-1252) :
à la position 0x90, la lettre minuscule i sans point ( ı ) ; aux positions 0x91 à 0x98, l’accent grave ( ` ), l’accent aigu ( ´ ), l’accent circonflexe ( ˆ ), le tilde en chef ( ˜ ), le macron ( ¯ ), la brève inversée ( ˘ ), le point en chef ( ˙ ) et le tréma ou signe de diérèse ( ¨ ) ; aux positions 0x9B et 0x9C, le rond en chef ( ˚ ) et la cédille ( ¸ ) ; aux positions 0x9D à 0x9F, le double accent aigu ( ˝ ), l’ogonek ( ˛ ) et le caron ( ˇ ).