# Les ASCII de 0 à 127/Les extensions de l'ASCII

Les codages de caractères ASCII étendu plus connus dans leur dénomination anglaise extended ASCII sont un ensemble de jeu de codage de caractères qui ont en commun le sous-ensemble de caractères ASCII. Ce terme est informel et peut être critiqué pour deux raisons: D'une part cette dénomination pourrait laisser penser que le standard ASCII aurait été étendu, alors qu'il désigne en fait un ensemble de normes qui incluent le sous-ensemble ASCII; D'autre part, l'ASCII étendu ne désigne pas un codage de caractère donné mais un ensemble de normes précisant chacune un codage de caractères différent contenant l'ASCII comme sous-ensemble.
La notion d' extended aSCII est d'un usage commun dans la documentation technique. Elle est reprise par le MSDN de Microsoft. Elles est reprise par de nombreuses pages de manuel Unix comme celles de MacOS X.
La société britannica associe ce concept à l'année 1981, à IBM et au codage 8 bits.

## Variations et extensions

Vu l'existence de milliers de standards et variantes informatiques de codage des caractères, il est difficile de se faire une idée des liens de parentés entre chacun d'entre eux. le tableau suivant donne une illustration du positionnement de l'ASCII, des ses extensions et de ses variantes, par rapport à quelques familles de standards informatiques, dans un contexte temporel.
| Télégraphie | Téléphonie | Informatique | Informatique | Informatique | Informatique | Informatique | Avion |
| Code Baudot ||
| A.I. 2 ||
| Diverses varaiations des codages EBCDIC et autres codages |||||
| A.I. 2 | A.I. 2 | ISO-646 - IRV ( variante internationale) | ISO-646 - IRV ( variante internationale) | ISO-646 - IRV ( variante internationale) | ISO-646 - IRV ( variante internationale) | ISO-646 - IRV ( variante internationale) | Arinc |
| A.I. 2 | A.I. 2 | ↓ | ↓ | ↓ | ↓ | | Arinc |
| Arinc ||||
| A.I. 2 | A.I. 2 | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646: Autres nations | Arinc |
| A.I. 2 | A.I. 2 | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ↓ | Arinc |
| A.I. 2 | A.I. 2 | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646 - US (États-Unis) | ISO-646: Autres nations | Arinc |
| A.I. 2 | A.I. 2 | ↓ | ↓ | ↓ | ↓ | ↓ | Arinc |
| A.I. 2 | A.I. 2 | ASCII | Page de code DOS (437, 850, ...) | Séries ISO 8859 (exemple ISO 8859-1, ISO 8859-15) | ISO 2022 (illimité à 256 caractères) | ↓ | Arinc |
| A.I. 2 | A.I. 2 | ASCII | ↓ | Séries ISO 8859 (exemple ISO 8859-1, ISO 8859-15) | ISO 2022 (illimité à 256 caractères) | ↓ | Arinc |
| A.I. 2 | A.I. 2 | ASCII | Codage windows (Windows-1252, etc) ou Ansinew | Séries ISO 8859 (exemple ISO 8859-1, ISO 8859-15) | ISO 2022 (illimité à 256 caractères) | ↓ | Arinc |
| A.I. 2 | A.I. 2 | ↓ | ↓ | ↓ | ↓ | ↓ | Arinc |
| Arinc |||||
| ↓ | | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | Arinc |
| AI n°5 | en:GSM 03.38 (SMS) | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | ISO 10646 / Unicode | Arinc |
| Légende : |
| ASCII | Un des standards assimilable à l'ASCII |
| Extensions de l'ASCII | Complète l'ASCII |
| Variante de l'ASCII | Différents de l'ASCII pour quelques caractères |
| Précurseur de l'ASCII | Un sous-ensemble |
| Sans lien avec l'ASCII | Sans lien avec l'ASCII |

## Historique et perspectives

Le besoin d'uniformiser les codages des caractères tout en préservant des spécificités locales a été ressenti dès avant les années 1960, avec l'apparition de normes ISO-646 et de ses différentes déclinaisons locales dont l'ASCII. Si à l'origine, l'ASCII a été pensé comme un codage de caractère pour les États-Unis, l'influence de l'industrie informatique a conduit à délaisser les différentes variantes de l'ISO-646 pour imposer l'ASCII. Le choix de codage d'un octet par caractère a dans un premier temps permis de représenter les caractères absents de l'ASCII. Il ne posait pas de problème à l'époque, dans la mesure où les ordinateurs n'étaient pas connectés en réseau.
Diverses extensions propriétaires sont apparues sur les PC non-EBCDIC, en particulier dans les universités. Atari et Commodore s a ajouté de nombreux symboles graphiques non-ASCII (Respectivement, ATASCII et PETSCII, basé sur la norme ASCII originald de 1963).
IBM a introduit des codes huit bits ASCII étendus sur IBM PC original et plus tard produit des variates pour des langues et de cultures différentes. IBM a appelé ces jeux de caractères pages de code et a désigné chaque jeu de page de code par un numéro assignés. En conséquence, les jeux de caractères sont très souvent indiquées par leur numéro de page de code IBM. Dans les pages de code ASCII compatibles, les 128 caractères faibles ont maintenu leurs standards valeurs ASCII, et différentes pages (ou des ensembles de caractères) peuvent être mis à disposition dans les 128 caractères. Dans les premiers PC commercialisés dans le marché nord-américain, par exemple, sous DOS la page de code 437 était utilisée, elle incluait quelques-uns des caractères accentués nécessaires pour le français, l'allemand, et quelques autres langues européennes, ainsi que certaines graphique de dessin de ligne caractères. Les différentes jeux de caractères ont permis de créer des fichiers et documents dans une combinaison de langues telles que Anglais et Français (si les ordinateurs français utilisent généralement des code page 850), mais pas, par exemple, en français et en grec (qui exigeait la page de code 737).
Apple Computer ont introduit leurs propres 8-bit codes ASCII étendus dans Mac OS, comme Mac OS Roman.
Digital Equipment Corporation a développé le caractère multinational, qui avait lettre caractères maximum mais de plus en combinaisons diacritiques, basée sur des versions préliminaires de ISO 8859. Il a été soutenu par le VT220.

## Fonctionnement et Théorie

L'utilisation de codages de caractères de type ASCII étendu repose d'une part sur la reconnaissance de syntaxe basée sur l'ASCII, et d'autre part sur un traitement souvent indifférencié des 128 valeurs restantes d'octet.
Cet aspect a été important pour les langages de programmations comme le langage C ou d'autre langages comme le HTML. Il a permis d'utiliser ces mêmes langages informatiques dans différents pays, grâce à l'ASCII, tout en permettant l'introduciton de chaîne de caractères et de commentaires dans la langue approppriée (locale, régionale ou nationale).

## Apports et limitations

La notion d'ASCII étendu a permis à moindre coût de déployer mondialement des logiciels représentant le texte en peu d'octets et d'ignorer tout ou partie des problématiques d'internationalisation. Il a également conduit a des problématiques d'intéropérabilité qui ont abouti à l'émergence de standards tels qu'Unicode.

### Apports

Les codages de caractères étendant l'ASCII additionnent à l'ASCII les caractères manquants à une langue, un culture ou un pays.
La préservation de l'ASCII permet la préservation des caractères de contrôle, la préservation des nombres et des labels en caractères non accentués. Elle permet également la préservation de symboles spécifiques à l'ASCII mais très utilisés en informatique, notamment dans les langages de programmation, comme les parenthèses, les chevrons, les accolades ou les crochets. Avant l'émergence de ce concept, le langage C avait du avoir recours au concept de digrammes et de trigrammes pour pallier l'absence de ces caractères. Depuis l'utilisation de l'ASCII étendu, l'usage des digrammes et des trigrammes dans le langage C est tombé en désuétude.
L'existence de 128 valeurs permet d'ajouter par exemple 128 caractères, qui selon le cas peuvent être des symboles graphiques informatique, des symboles mathématiques (lettre grecques), des alphabets ou compléments d'alphabet locaux, des symboles littéraires, ou de ponctuation, des symboles commerciaux.
Les codages de caractères ISO-8859 apportent également une deuxième plage de caractères de contrôle dite C1, entre les valeurs 128 et 159.
Un logiciel, un protocole, un fichier de configuration, un fichier de code sources ou tout autre service peut-donc dans une certaine mesure être interopérable avec un ensemble de codage de caractères étendant l'ASCII, sans connaître précisément les différentes extensions existantes.

### Limitations

Les différentes techniques d'extension de l'ASCII posent différentes problématiques:
S'il peut-être est facile de savoir que le codage est en partie ASCII, l'autre partie du codage est parfois ou souvent incertaine.
Les extensions de l'ASCII peuvent reposer sur des techniques variées. Certaines techniques garantissent que chaque octet représente un caractère, alors que d'autres utilisent plusieurs octets pour représenter un caractère. Certaines extensions introduisent des octets nuls (UTF-16) alors que d'autres réservent l'usage de cette valeur particulière. Certaines extensions garantissent qu'un octet a toujours la même signification, alors que dans d'autres (ISO-2022), la caractère représenté par un octet dépend du contexte. Certaines extensions permettent des séquences d'échappement dans lesquels les valeurs de caractères ASCII ne sont pas des caractères ASCII. Certaines extensions apportent des caractères de contrôles ou des caractères d'espacement qui ne sont pas reconnus par tous les logiciels.
Cette diversité est généralement difficile ou impossible à gérer entièrement et peut conduire à des problématiques d'interopérabilité comme à des mojibake ou autres affichages malencontreux.

## Standardisation et normalisation

Il n'existe pas de standardisation spécifique de la notion d'ASCII étendu. Elle est donc sujette a interprétation. Ainsi certains considèrent que la présence d'un byte order mark suffit à dire que l' UTF-8 n'est pas de l'extended ASCII; la même question peut se poser pour des codages de caractères tels que shift JIS ou ceux incluant des séquences d'échappement. Alors que d'autres considèrent que l'UTF-16 est une forme d'extension de l'ASCII.

## Usages et applications

Dans de nombreux protocoles, les plus important courrier électronique et HTTP, le codage de caractères du contenu doit être étiqueté avec des attributs IANA des identificateurs de jeu de caractères.

## Aspects économiques et sociaux

Cette technologie a dominé le monde informatique durant la seconde moitié du vingtième siècle, depuis l'introduction de l'ordinateur, jusqu'à la banalisation de l'ISO-10646 plus connu sous le nom commercial d'Unicode.
Parce que ces extensions ASCII sont autant de variantes, il est nécessaire d'identifier quel jeu est utilisé pour un texte particulier pour qu'il puisse être interprété correctement. Cependant, parce que les caractères les plus utilisés (ceux en ASCII, les points de code sept bits) sont communs à tous les jeux, il est extrêmement difficile d'identifier correctement un jeu de caractères. Si cela est sans incidence pour un fichier en langue anglaise cela a des conséquences fâcheuses pour les utilisateurs d'autres langues.
Par ailleurs, sur internet, parce que les logiciels de nombreux internautes utilisent la norme ISO 8859-1, et parce que Microsoft Windows (en utilisant la page de code 1252-ensemble de la norme ISO 8859-1) est le système d'exploitation en position dominante pour les ordinateurs personnels d'aujourd'hui, l'utilisation inopinée/impromptue de la norme ISO 8859-1 est tout à fait banalisé, et a souvent été présumée sans preuve du contraire.

## Bibliographie

* International support in application and system software, Mark Davis et Jack Grimes
De nombreux livres apparaissent dans Google Books lors de la recherche de "Extended ASCII". Ces livres utilisent la dénomination Extended ASCII, sans nécessairement la définir.
À titre d'exemple :
* Advanced Rails - Page 238
* Mastering Microsoft Windows Vista Home: Premium and Basic - Page 219
* High Definition: An A to Z Guide to Personal Technology - Page 119
* Digital Typography Using LaTeX - Page 14
* New Perspectives on Microsoft Office 2007 - Page 13
* New Perspectives on Computer Concepts - Page 24
* Dictionary of Information Technology - Page 212

## Notes et références

* ↑ http://msdn.microsoft.com/en-us/library/4z4t9ed1%28v=vs.71%29.aspx
* ↑ http://www.manpages.info/macosx/file.1.html
* ↑ http://www.britannica.com/EBchecked/topic/198823/extended-ASCII