ASCII - ASCII

ASCII
Tableau de codes USASCII.png
Tableau ASCII d'un manuel d'imprimante antérieur à 1972
MIME / IANA us-ascii
Pseudo(s) ISO-IR-006, ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, nous, IBM367, cp367
Langue(s) Anglais
Classification Série ISO 646
Rallonges
Précédé par ITA 2 , DONNÉES DE TERRAIN
succédé par ISO 8859 , Unicode

ASCII ( / æ s k Í / ( écouter ) A propos de ce son CUL -kee ), en abrégé de code standard américain pour l' échange d' information , est un codage de caractères standard pour la communication électronique. Les codes ASCII représentent du texte dans les ordinateurs, les équipements de télécommunications et d'autres appareils. La plupart des schémas de codage de caractères modernes sont basés sur l'ASCII, bien qu'ils prennent en charge de nombreux caractères supplémentaires.

L' Internet Assigned Numbers Authority (IANA) préfère le nom US-ASCII pour ce codage de caractères.

L'ASCII est l'un des jalons de l' IEEE .

Aperçu

L'ASCII a été développé à partir du code télégraphique . Sa première utilisation commerciale était un code de téléimprimeur à sept bits promu par les services de données de Bell. Les travaux sur la norme ASCII ont commencé en mai 1961, avec la première réunion du sous-comité X3.2 de l' American Standards Association (ASA) (maintenant l' American National Standards Institute ou ANSI). La première édition de la norme a été publiée en 1963, a subi une révision majeure en 1967 et a connu sa plus récente mise à jour en 1986. ) de listes et de fonctionnalités ajoutées pour les appareils autres que les téléimprimeurs.

L'utilisation du format ASCII pour l'échange de réseau a été décrite en 1969. Ce document a été officiellement élevé au rang de norme Internet en 2015.

Basé à l'origine sur l' alphabet anglais , l'ASCII encode 128 caractères spécifiés en nombres entiers de sept bits, comme le montre le tableau ASCII ci-dessus. Quatre-vingt-quinze des caractères codés sont imprimables : il s'agit des chiffres 0 à 9 , des lettres minuscules a à z , des lettres majuscules A à Z et des symboles de ponctuation . De plus, la spécification ASCII d'origine comprenait 33 codes de contrôle non imprimables provenant des machines Teletype ; la plupart d'entre eux sont désormais obsolètes, bien que quelques-uns soient encore couramment utilisés, comme le retour chariot , le saut de ligne et les codes de tabulation .

Par exemple, i minuscule serait représenté dans l'encodage ASCII par binaire 1101001 = hexadécimal 69 ( i est la neuvième lettre) = décimal 105.

Histoire

ASCII (1963). Les images de contrôle des contrôles équivalents sont affichées lorsqu'elles existent, ou un point gris dans le cas contraire.

L'American Standard Code for Information Interchange (ASCII) a été développé sous les auspices d'un comité de l' American Standards Association (ASA), appelé comité X3, par son sous-comité X3.2 (plus tard X3L2), et plus tard par le X3 de ce sous-comité. 2.4 groupe de travail (maintenant INCITS ). L'ASA est devenue le United States of America Standards Institute (USASI) et finalement l' American National Standards Institute (ANSI).

Avec les autres caractères spéciaux et codes de contrôle remplis, l'ASCII a été publié sous le nom ASA X3.4-1963, laissant 28 positions de code sans aucune signification attribuée, réservées pour une future normalisation, et un code de contrôle non attribué. Il y avait un débat à l'époque pour savoir s'il devrait y avoir plus de caractères de contrôle plutôt que l'alphabet minuscule. L'indécision n'a pas duré longtemps : en mai 1963, le groupe de travail du CCITT sur le nouvel alphabet télégraphique a proposé d'attribuer des caractères minuscules aux bâtons 6 et 7, et l'Organisation internationale de normalisation TC 97 SC 2 a voté en octobre pour incorporer le changement dans son projet de norme. . Le groupe de travail X3.2.4 a voté son approbation pour le changement en ASCII lors de sa réunion de mai 1963. La localisation des lettres minuscules dans les bâtonnets 6 et 7 a entraîné une différence entre les caractères binaires et les majuscules d'un seul bit, ce qui a simplifié la correspondance des caractères insensibles à la casse et la construction des claviers et des imprimantes.

Le comité X3 a apporté d'autres modifications, y compris d'autres nouveaux caractères (les caractères d' accolade et de barre verticale ), en renommant certains caractères de contrôle (SOM est devenu le début de l'en-tête (SOH)) et en déplaçant ou en supprimant d'autres (RU a été supprimé). L'ASCII a ensuite été mis à jour sous le nom d'USAS X3.4-1967, puis d'USAS X3.4-1968, d'ANSI X3.4-1977 et enfin d'ANSI X3.4-1986.

Révisions de la norme ASCII :

  • ASA X3.4-1963
  • ASA X3.4-1965 (approuvé, mais non publié, néanmoins utilisé par les stations d'affichage IBM 2260 et 2265 et le contrôle d'affichage IBM 2848 )
  • USAS X3.4-1967
  • USAS X3.4-1968
  • ANSI X3.4-1977
  • ANSI X3.4-1986
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002)
  • ANSI INCITS 4-1986 (R2007)
  • (ANSI) INCITS 4-1986[R2012]
  • (ANSI) INCITS 4-1986[R2017]

Dans la norme X3.15, le comité X3 a également abordé la manière dont l'ASCII doit être transmis (le bit le moins significatif en premier) et la manière dont il doit être enregistré sur une bande perforée. Ils ont proposé une norme à 9 pistes pour la bande magnétique et ont tenté de traiter certains formats de cartes perforées .

Considérations sur la conception

Largeur de bits

Le sous-comité X3.2 a conçu l'ASCII sur la base des premiers systèmes de codage des téléscripteurs. Comme d'autres codages de caractères , l'ASCII spécifie une correspondance entre les modèles de bits numériques et les symboles de caractères (c'est-à-dire les graphèmes et les caractères de contrôle ). Cela permet aux appareils numériques de communiquer entre eux et de traiter, stocker et communiquer des informations orientées caractères telles que le langage écrit. Avant le développement de l'ASCII, les codages utilisés comprenaient 26 caractères alphabétiques , 10 chiffres numériques et de 11 à 25 symboles graphiques spéciaux. Pour inclure tous ceux-ci et les caractères de contrôle compatibles avec la norme de 1924 de l' Alphabet télégraphique international n° 2 (ITA2) du Comité Consultatif International Téléphonique et Télégraphique (CCITT) , FIELDATA (1956) et le premier EBCDIC (1963), plus de 64 codes ont été requis pour l'ASCII.

ITA2 était quant à lui basé sur le code télégraphique à 5 bits inventé par Émile Baudot en 1870 et breveté en 1874.

Le comité a débattu de la possibilité d'une fonction de décalage (comme dans ITA2 ), qui permettrait à plus de 64 codes d'être représentés par un code à six bits . Dans un code décalé, certains codes de caractères déterminent les choix entre les options pour les codes de caractères suivants. Il permet un codage compact, mais est moins fiable pour la transmission de données , car une erreur dans la transmission du code de décalage rend généralement une longue partie de la transmission illisible. Le comité des normes a décidé de ne pas déplacer, et donc ASCII a exigé au moins un code à sept bits.

Le comité a considéré un code à huit bits, puisque huit bits ( octets ) permettraient à deux modèles de quatre bits d'encoder efficacement deux chiffres avec un nombre décimal codé en binaire . Cependant, il faudrait que toutes les transmissions de données envoient huit bits alors que sept pourraient suffire. Le comité a voté pour l'utilisation d'un code à sept bits afin de minimiser les coûts associés à la transmission de données. Étant donné que la bande perforée à l'époque pouvait enregistrer huit bits dans une position, elle permettait également un bit de parité pour la vérification des erreurs si désiré. Les machines à huit bits (avec des octets comme type de données natif) qui n'utilisaient pas le contrôle de parité définissent généralement le huitième bit sur 0.

Organisation interne

Le code lui-même était structuré de manière à ce que la plupart des codes de contrôle soient ensemble et que tous les codes graphiques soient ensemble, pour faciliter l'identification. Les deux premiers sticks dits ASCII (32 positions) étaient réservés aux personnages de contrôle. Le caractère "espace" devait venir avant les graphiques pour faciliter le tri , il est donc devenu la position 20 hexadécimale ; pour la même raison, de nombreux signes spéciaux couramment utilisés comme séparateurs ont été placés avant les chiffres. Le comité a décidé qu'il était important de prendre en charge les alphabets majuscules de 64 caractères et a choisi de modéliser l'ASCII afin qu'il puisse être facilement réduit à un ensemble de codes graphiques utilisables de 64 caractères, comme cela a été fait dans le code DEC SIXBIT (1963). Les lettres minuscules n'étaient donc pas entrelacées avec des majuscules. Pour garder les options disponibles pour les lettres minuscules et autres graphiques, les codes spéciaux et numériques ont été disposés avant les lettres, et la lettre A a été placée en position 41 hexadécimale pour correspondre au projet de la norme britannique correspondante. Les chiffres 0-9 sont préfixés par 011, mais les 4 bits restants correspondent à leurs valeurs respectives en binaire, ce qui rend la conversion avec décimal codé binaire simple.

De nombreux caractères non alphanumériques étaient positionnés pour correspondre à leur position décalée sur les machines à écrire ; une subtilité importante est que ceux-ci étaient basés sur des machines à écrire mécaniques , et non sur des machines à écrire électriques . Les machines à écrire mécaniques ont suivi la norme établie par le Remington n ° 2 (1878), la première machine à écrire avec une touche de décalage, et les valeurs décalées de 23456789-étaient "#$%_&'() - les premières machines à écrire ont omis 0 et 1 , en utilisant O (lettre majuscule o ) et l (lettre minuscule L ) à la place, mais 1!et les 0)paires sont devenues standard une fois que 0 et 1 sont devenus communs. Ainsi, en ASCII !"#$%ont été placés dans le deuxième bâton, les positions 1 à 5, correspondant aux chiffres 1 à 5 dans le bâton adjacent. Les parenthèses ne pouvaient cependant pas correspondre à 9 et 0 , car la place correspondant à 0 était prise par le caractère espace. Cela a été accommodé en supprimant _(souligné) de 6 et en décalant les caractères restants, qui correspondaient à de nombreuses machines à écrire européennes qui plaçaient les parenthèses avec 8 et 9 . Cet écart par rapport aux machines à écrire a conduit à des claviers à paires binaires , notamment le modèle Teletype 33 , qui utilisait la disposition décalée vers la gauche correspondant à l'ASCII, et non aux machines à écrire mécaniques traditionnelles. Les machines à écrire électriques, notamment l' IBM Selectric (1961), utilisaient une disposition quelque peu différente qui est devenue la norme sur les ordinateurs - à la suite de l' IBM PC (1981), en particulier le modèle M (1984) - et donc les valeurs de décalage pour les symboles sur les claviers modernes ne correspondent pas aussi proche de la table ASCII que les claviers précédents. La /?paire date également du n° 2, et les ,< .>paires ont été utilisées sur certains claviers (d'autres, dont le n° 2, ne se décalaient pas ,(virgule) ou .(point) afin qu'elles puissent être utilisées en majuscule sans décaler). Cependant, ASCII a divisé la ;:paire (datant du n ° 2) et a réorganisé les symboles mathématiques (conventions variées, généralement -* =+) en :* ;+ -=.

Certains caractères communs n'ont pas été inclus, notamment ½¼¢, tandis qu'ils ^`~ont été inclus comme signes diacritiques à usage international et <>à usage mathématique, avec les caractères de ligne simples \|(en plus du commun /). Le symbole @ n'était pas utilisé en Europe continentale et le comité s'attendait à ce qu'il soit remplacé par un À accentué dans la variante française, donc le @ a été placé en position 40 hex , juste avant la lettre A.

Les codes de contrôle jugés essentiels pour la transmission des données étaient le début du message (SOM), la fin de l'adresse (EOA), la fin du message (EOM), la fin de la transmission (EOT), « qui êtes-vous ? » (WRU), "l'êtes-vous ?" (RU), un contrôle de périphérique réservé (DC0), un ralenti synchrone (SYNC) et un accusé de réception (ACK). Ceux-ci ont été positionnés pour maximiser la distance de Hamming entre leurs modèles de bits.

Ordre des caractères

L'ordre des codes ASCII est également appelé ordre ASCIIbétique . Le classement des données est parfois effectué dans cet ordre plutôt que dans l'ordre alphabétique « standard » (ordre de classement ). Les principaux écarts dans l'ordre ASCII sont :

  • Toutes les majuscules précèdent les minuscules ; par exemple, "Z" précède "a"
  • Les chiffres et de nombreux signes de ponctuation précèdent les lettres

Une commande intermédiaire convertit les majuscules en minuscules avant de comparer les valeurs ASCII.

Groupes de caractères

Caractères de contrôle

ASCII réserve les 32 premiers codes (chiffres 0 à 31 décimaux) pour les caractères de contrôle : codes initialement destinés à ne pas représenter des informations imprimables, mais plutôt à contrôler les appareils (tels que les imprimantes ) qui utilisent l'ASCII, ou à fournir des méta-informations sur les données flux tels que ceux stockés sur bande magnétique.

Par exemple, le caractère 10 représente la fonction "saut de ligne" (qui fait avancer le papier d'une imprimante), et le caractère 8 représente le "retour arrière". RFC  2822 fait référence aux caractères de contrôle qui n'incluent pas de retour chariot, de saut de ligne ou d' espace en tant que caractères de contrôle autres que les espaces. À l'exception des caractères de contrôle qui prescrivent un formatage élémentaire orienté ligne, l'ASCII ne définit aucun mécanisme pour décrire la structure ou l'apparence du texte dans un document. D'autres schémas, tels que les langages de balisage , la mise en page et le formatage des pages d'adresses et des documents.

La norme ASCII d'origine n'utilisait que de courtes phrases descriptives pour chaque caractère de contrôle. L'ambiguïté que cela provoquait était parfois intentionnelle, par exemple lorsqu'un caractère serait utilisé légèrement différemment sur un lien terminal que sur un flux de données , et parfois accidentelle, par exemple avec le sens de "supprimer".

Probablement le dispositif le plus influent sur l'interprétation de ces caractères était le Teletype Model 33 ASR, qui était un terminal d'impression avec une option de lecteur/perforateur de bande papier disponible . La bande de papier était un support très populaire pour le stockage de programmes à long terme jusqu'aux années 1980, moins coûteuse et à certains égards moins fragile que la bande magnétique. En particulier, les affectations de machines Teletype Model 33 pour les codes 17 (Control-Q, DC1, également connu sous le nom de XON), 19 (Control-S, DC3, également connu sous le nom de XOFF) et 127 ( Supprimer ) sont devenues des normes de facto. Le modèle 33 était également remarquable pour prendre littéralement la description de Control-G (code 7, BEL, signifiant alerter l'opérateur de manière audible), car l'unité contenait une véritable cloche qu'elle sonnait lorsqu'elle recevait un caractère BEL. Parce que le dessus de touche de la touche O montrait également un symbole de flèche vers la gauche (de ASCII-1963, qui avait ce caractère au lieu du trait de soulignement ), une utilisation non conforme du code 15 (Control-O, Shift In) interprétée comme "supprimer le caractère précédent" a également été adopté par de nombreux premiers systèmes de temps partagé, mais a finalement été négligé.

Lorsqu'un Teletype 33 ASR équipé du lecteur de bande papier automatique a reçu un Control-S (XOFF, abréviation de transmission désactivée), il a provoqué l'arrêt du lecteur de bande ; la réception de Control-Q (XON, "transmit on") a provoqué la reprise du lecteur de bande. Cette technique a été adoptée par plusieurs premiers systèmes d'exploitation informatiques en tant que signal d'"établissement de liaison" avertissant un expéditeur d'arrêter la transmission en raison d'un débordement imminent; il persiste à ce jour dans de nombreux systèmes en tant que technique de contrôle de sortie manuel. Sur certains systèmes, Control-S conserve sa signification mais Control-Q est remplacé par un second Control-S pour reprendre la sortie. Le 33 ASR peut également être configuré pour utiliser Control-R (DC2) et Control-T (DC4) pour démarrer et arrêter la perforation de la bande ; sur certaines unités équipées de cette fonction, le lettrage du caractère de contrôle correspondant sur le capuchon au-dessus de la lettre était TAPE et TAPE respectivement.

Supprimer et retour arrière

Le télétype ne pouvait pas déplacer la tête vers l'arrière, il n'a donc pas mis de touche sur le clavier pour envoyer un BS (backspace). Au lieu de cela, il y avait une clé marquée RUB OUTqui envoyait le code 127 (DEL). Le but de cette clé était d'effacer les erreurs d'une bande de papier tapée à la main : l'opérateur devait appuyer sur un bouton sur le perforateur de bande pour la sauvegarder, puis taper l'effacement, qui a percé tous les trous et remplacé l'erreur par un caractère qui était destiné à être ignoré. Les télétypes étaient couramment utilisés pour les ordinateurs moins chers de Digital Equipment Corporation , de sorte que ces systèmes devaient utiliser la clé disponible et donc le code DEL pour effacer le caractère précédent. Pour cette raison, les terminaux vidéo DEC (par défaut) ont envoyé le code DEL pour la touche marquée "Retour arrière" tandis que la touche marquée "Supprimer" envoyait une séquence d'échappement, tandis que de nombreux autres terminaux envoyaient BS pour la touche Retour arrière. Le pilote de terminal Unix ne pouvait utiliser qu'un seul code pour effacer le caractère précédent, celui-ci pouvait être défini sur BS ou DEL, mais pas sur les deux, ce qui entraînait une longue période d'ennui où les utilisateurs devaient le corriger en fonction du terminal qu'ils utilisaient (shells qui permettent l'édition de ligne, comme ksh , bash et zsh , comprennent les deux). L'hypothèse selon laquelle aucune clé n'a envoyé de BS a entraîné l'utilisation de Control+H à d'autres fins, telles que la commande de préfixe "help" dans GNU Emacs .

Échapper

Beaucoup d'autres codes de contrôle ont reçu des significations très différentes de celles d'origine. Le caractère "échappement" (ESC, code 27), par exemple, était destiné à l'origine à permettre l'envoi d'autres caractères de contrôle sous forme de littéraux au lieu d'invoquer leur signification. C'est la même signification d'"échappement" rencontrée dans les encodages d'URL, les chaînes de langage C et d'autres systèmes où certains caractères ont une signification réservée. Au fil du temps, ce sens a été coopté et a finalement été modifié. Dans l'utilisation moderne, un ESC envoyé au terminal indique généralement le début d'une séquence de commandes généralement sous la forme d'un " code d'échappement ANSI " (ou, plus correctement, un " Control Sequence Introducer ") de ECMA-48 ( 1972) et ses successeurs, commençant par ESC suivi d'un caractère "[" (crochet gauche). Un ESC envoyé depuis le terminal est le plus souvent utilisé comme un caractère hors bande utilisé pour terminer une opération, comme dans les éditeurs de texte TECO et vi . Dans l' interface utilisateur graphique (GUI) et fenêtrage systèmes, ESC provoque généralement une application pour interrompre son fonctionnement en cours ou à la sortie (fin) au total.

Fin de ligne

L'ambiguïté inhérente de nombreux caractères de contrôle, combinée à leur utilisation historique, a créé des problèmes lors du transfert de fichiers "texte brut" entre les systèmes. Le meilleur exemple de ceci est le problème de saut de ligne sur divers systèmes d'exploitation . Les téléscripteurs exigeaient qu'une ligne de texte se termine à la fois par « Retour chariot » (qui déplace la tête d'impression au début de la ligne) et « Avance de ligne » (qui fait avancer le papier d'une ligne sans déplacer la tête d'impression). Le nom "Carriage Return" vient du fait que sur une machine à écrire manuelle, le chariot tenant le papier se déplaçait tandis que la position où les barres de frappe frappaient le ruban restait stationnaire. L'ensemble du chariot devait être poussé (retourné) vers la droite afin de positionner la marge gauche du papier pour la ligne suivante.

Les systèmes d' exploitation DEC ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 , etc.) utilisaient les deux caractères pour marquer la fin d'une ligne afin que le périphérique de console (à l'origine des machines Teletype ) fonctionne. Au moment où les soi-disant « TTY en verre » (appelés plus tard CRT ou terminaux) sont arrivés, la convention était si bien établie que la compatibilité descendante a nécessité la poursuite de la convention. Lorsque Gary Kildall a créé CP/M, il s'est inspiré de certaines conventions d'interface de ligne de commande utilisées dans le RT-11 de DEC . Jusqu'à l'introduction de PC DOS en 1981, IBM n'avait aucune part à cela parce que leurs systèmes d'exploitation des années 1970 utilisaient EBCDIC au lieu d'ASCII et ils étaient orientés vers l'entrée de cartes perforées et la sortie d'imprimantes ligne sur lesquelles le concept de retour chariot n'avait aucun sens. Le PC DOS d' IBM (également commercialisé sous le nom de MS-DOS par Microsoft) a hérité de la convention parce qu'il est vaguement basé sur CP/M, et Windows l'a hérité de MS-DOS.

Malheureusement, exiger deux caractères pour marquer la fin d'une ligne introduit une complexité inutile et des questions sur la façon d'interpréter chaque caractère lorsqu'il est rencontré seul. Pour simplifier les choses , les flux de données en texte brut , y compris les fichiers, sur Multics utilisaient le saut de ligne (LF) seul comme fin de ligne. Les systèmes Unix et de type Unix , ainsi que les systèmes Amiga , ont adopté cette convention de Multics. D'un autre côté, le système d'exploitation Macintosh OS , Apple DOS et ProDOS utilisait uniquement le retour chariot (CR) comme terminaison de ligne; Cependant, depuis qu'Apple a remplacé ces systèmes d'exploitation par le système d' exploitation macOS basé sur Unix , ils utilisent désormais également le saut de ligne (LF). Le Radio Shack TRS-80 utilisait également un seul CR pour terminer les lignes.

Les ordinateurs connectés à l' ARPANET comprenaient des machines exécutant des systèmes d'exploitation tels que TOPS-10 et TENEX utilisant des fins de ligne CR-LF, des machines exécutant des systèmes d'exploitation tels que Multics utilisant des fins de ligne LF et des machines exécutant des systèmes d'exploitation tels que OS/360 qui représentaient des lignes comme un nombre de caractères suivi des caractères de la ligne et qui utilisait EBCDIC plutôt qu'ASCII. Le protocole Telnet a défini un « Network Virtual Terminal » (NVT) ASCII , de sorte que les connexions entre les hôtes avec des conventions de fin de ligne et des jeux de caractères différents puissent être prises en charge en transmettant un format texte standard sur le réseau. Telnet utilisait l'ASCII avec les fins de ligne CR-LF, et les logiciels utilisant d'autres conventions se traduiraient entre les conventions locales et le NVT. Le protocole de transfert de fichiers a adopté le protocole Telnet, y compris l'utilisation du terminal virtuel réseau, à utiliser lors de la transmission de commandes et du transfert de données en mode ASCII par défaut. Cela ajoute de la complexité aux implémentations de ces protocoles et à d'autres protocoles réseau, tels que ceux utilisés pour le courrier électronique et le World Wide Web, sur des systèmes n'utilisant pas la convention de fin de ligne CR-LF de NVT.

Fin de fichier/flux

Le moniteur PDP-6, et son successeur PDP-10 TOPS-10, utilisaient Control-Z (SUB) comme indication de fin de fichier pour l'entrée à partir d'un terminal. Certains systèmes d'exploitation tels que CP/M suivaient la longueur du fichier uniquement en unités de blocs de disque et utilisaient Control-Z pour marquer la fin du texte réel dans le fichier. Pour ces raisons, EOF, ou end-of-file , a été utilisé familièrement et conventionnellement comme un acronyme à trois lettres pour Control-Z au lieu de SUBstitute. Le code de fin de texte ( ETX ), également connu sous le nom de Control-C , était inapproprié pour diverses raisons, tandis que l'utilisation de Z comme code de contrôle pour terminer un fichier est analogue à la fin de l'alphabet et constitue un outil très pratique. aide mnémotechnique . Une convention historiquement courante et toujours répandue utilise la convention de code ETX pour interrompre et arrêter un programme via un flux de données d'entrée, généralement à partir d'un clavier.

Dans la bibliothèque C et les conventions Unix , le caractère nul est utilisé pour terminer les chaînes de texte ; de telles chaînes terminées par zéro peuvent être connues en abréviation comme ASCIZ ou ASCIIZ, où ici Z signifie "zéro".

Tableau des codes de contrôle

Binaire oct déc Hex Abréviation Nom (1967)
1963 1965 1967
000 0000 000 0 00 NUL NUL ?? ^@ \0 Nul
000 0001 001 1 01 SOM SOH ?? ^ Un Début de cap
000 0010 002 2 02 AOD STX ?? ^B Début du texte
000 0011 003 3 03 MOE ETX ?? ^C Fin du texte
000 0100 004 4 04 EOT ?? ^D Fin de transmission
000 0101 005 5 05 WRU ENQ ?? ^E Demande
000 0110 006 6 06 RU ACK ?? ^F Reconnaissance
000 0111 007 7 07 CLOCHE BEL ?? ^G \une cloche
000 1000 010 8 08 FE0 BS ?? ^H \b Retour arrière
000 1001 011 9 09 HT/SK HT ?? ^Je \t Onglet horizontal
000 1010 012 dix 0A LF ?? ^J \n Saut de ligne
000 1011 013 11 0B VTAB Vermont ?? ^K \v Onglet vertical
000 1100 014 12 0C FF ?? ^L \F Flux de formulaire
000 1101 015 13 0D RC ?? ^M \r Retour chariot
000 1110 016 14 0E DONC ?? ^N Sortir
000 1111 017 15 0F SI ?? ^O Changement d'entrée
001 0000 020 16 dix DC0 DLE ?? ^P Échappement de liaison de données
001 0001 021 17 11 DC1 ?? ^Q Contrôle de l'appareil 1 (souvent XON )
001 0010 022 18 12 DC2 ?? ^R Contrôle de l'appareil 2
001 0011 023 19 13 DC3 ?? ^S Contrôle de l'appareil 3 (souvent XOFF )
001 0100 024 20 14 DC4 ?? ^T Contrôle de l'appareil 4
001 0101 025 21 15 SE TROMPER NAK ?? ^U Accusé de réception négatif
001 0110 026 22 16 SYNCHRONISATION SYN ?? ^V Inactif synchrone
001 0111 027 23 17 LEM ETB ?? ^W Bloc de fin de transmission
001 1000 030 24 18 S0 POUVEZ ?? ^X Annuler
001 1001 031 25 19 S1 EM ?? ^O Fin du milieu
001 1010 032 26 1A S2 SS SOUS ?? ^Z Remplacer
001 1011 033 27 1B S3 ESC ?? ^[ \e Échapper
001 1100 034 28 1C S4 FS ?? ^\ Séparateur de fichiers
001 1101 035 29 1D S5 GS ?? ^] Séparateur de groupe
001 1110 036 30 1E S6 RS ?? ^^ Séparateur d'enregistrements
001 1111 037 31 1F S7 nous ?? ^_ Séparateur d'unités
111 1111 177 127 7F DEL ?? ^? Effacer

D'autres représentations peuvent être utilisées par des équipements spécialisés, par exemple des graphiques ISO 2047 ou des nombres hexadécimaux .

Caractères imprimables

Les codes 20 hex à 7E hex , connus sous le nom de caractères imprimables, représentent des lettres, des chiffres, des signes de ponctuation et quelques symboles divers. Il y a 95 caractères imprimables au total.

Le code 20 hex , le caractère " espace " , désigne l'espace entre les mots, tel qu'il est produit par la barre d'espace d'un clavier. Étant donné que le caractère espace est considéré comme un graphique invisible (plutôt qu'un caractère de contrôle), il est répertorié dans le tableau ci-dessous plutôt que dans la section précédente.

Le code 7F hex correspond au caractère de contrôle « delete » non imprimable (DEL) et est donc omis de ce tableau ; il est couvert dans le tableau de la section précédente. Les versions antérieures de ASCII utilisé la flèche vers le haut au lieu du caret (5E hex ) et la flèche gauche au lieu du trait de soulignement (5F hex ).

Binaire oct déc Hex Glyphe
1963 1965 1967
010 0000 040 32 20  espacer
010 0001 041 33 21 !
010 0010 042 34 22 "
010 0011 043 35 23 #
010 0100 044 36 24 $
010 0101 045 37 25 %
010 0110 046 38 26 &
010 0111 047 39 27 '
010 1000 050 40 28 (
010 1001 051 41 29 )
010 1010 052 42 2A *
010 1011 053 43 2B +
010 1100 054 44 2C ,
010 1101 055 45 2D -
010 1110 056 46 2E .
010 1111 057 47 2F /
011 0000 060 48 30 0
011 0001 061 49 31 1
011 0010 062 50 32 2
011 0011 063 51 33 3
011 0100 064 52 34 4
011 0101 065 53 35 5
011 0110 066 54 36 6
011 0111 067 55 37 7
011 1000 070 56 38 8
011 1001 071 57 39 9
011 1010 072 58 3A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 3D =
011 1110 076 62 3E >
011 1111 077 63 3F ?
100 0000 100 64 40 @ ` @
100 0001 101 65 41 UNE
100 0010 102 66 42 B
100 0011 103 67 43 C
100 0100 104 68 44
100 0101 105 69 45 E
100 0110 106 70 46 F
100 0111 107 71 47 g
100 1000 110 72 48 H
100 1001 111 73 49 je
100 1010 112 74 4A J
100 1011 113 75 4B K
100 1100 114 76 4C L
100 1101 115 77 4D M
100 1110 116 78 4E N
100 1111 117 79 4F O
101 0000 120 80 50 P
101 0001 121 81 51 Q
101 0010 122 82 52 R
101 0011 123 83 53 S
101 0100 124 84 54 T
101 0101 125 85 55 U
101 0110 126 86 56 V
101 0111 127 87 57 W
101 1000 130 88 58 X
101 1001 131 89 59 Oui
101 1010 132 90 5A Z
101 1011 133 91 5B [
101 1100 134 92 5C \ ~ \
101 1101 135 93 5D ]
101 1110 136 94 5E ?? ^
101 1111 137 95 5F ?? _
110 0000 140 96 60 @ `
110 0001 141 97 61 une
110 0010 142 98 62 b
110 0011 143 99 63 c
110 0100 144 100 64
110 0101 145 101 65 e
110 0110 146 102 66 F
110 0111 147 103 67 g
110 1000 150 104 68 h
110 1001 151 105 69 je
110 1010 152 106 6A j
110 1011 153 107 6B k
110 1100 154 108 6C je
110 1101 155 109 6D m
110 1110 156 110 6E m
110 1111 157 111 6F o
111 0000 160 112 70 p
111 0001 161 113 71 q
111 0010 162 114 72 r
111 0011 163 115 73 s
111 0100 164 116 74 t
111 0101 165 117 75 vous
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 X
111 1001 171 121 79 oui
111 1010 172 122 7A z
111 1011 173 123 7B {
111 1100 174 124 7C ACK ?? |
111 1101 175 125 7D }
111 1110 176 126 7E ESC | ~

Jeu de caractères

Les points qui représentaient un personnage différent dans les versions précédentes (la version de 1963 ou le brouillon de 1965) sont encadrés. Les points attribués depuis la version 1963 mais inchangés par ailleurs sont affichés légèrement ombrés par rapport à leurs couleurs de légende.

ASCII (1977/1986)
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _UNE _B _C _RÉ _E _F
0_
0
NUL
0000
SOH
0001
STX
0002
ETX
0003
EOT
0004
ENQ
0005
ACK
0006
BEL
0007
BS
0008
HT
0009
BF
000A
VT
000B
FF
000C
CR
000D
SO
000E
SI
000F
1_
16
DLE
0010
DC1
0011
DC2
0012
DC3
0013
DC4
0014
NAK
0015
SYN
0016
ETB
0017
CAN
0018
EM
0019
SUB
001A
ESC
001B
FS
001C
GS
001D
RS
001E
NOUS
001F
2_
32
SP
0020
!
0021
"
0022
#
0023
0024 $
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
:
003A
;
003B
<
003C
=
003D
>
003E
?
003F
4_
64
@
0040
Un
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
je
0049
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
5_
80
P
0050
Q
0051
R
0052
S
0053
T
0054
U
0055
V
0056
W
0057
X
0058
Y
0059
Z
005A
[
005B
\
005C
]
005D
^
005E
_
005F
6_
96
`
0060
un
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
h
0068
je
0069
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
7_
112
p
0070
q
0071
r
0072
s
0073
t
0074
u
0075
v
0076
avec
0077
x
0078
et
0079
z
007A
{
007B
|
007C
}
007D
~
007E
DEL
007F

  Lettre  Nombre  Ponctuation  symbole  Autre  Indéfini  Caractère changé depuis la version 1963 ou le brouillon 1965

Utilisation

L'ASCII a été utilisé pour la première fois dans le commerce en 1963 comme code de téléimprimeur à sept bits pour le réseau TWX (TeletypeWriter eXchange) d' American Telephone & Telegraph . TWX utilisait à l'origine le premier ITA2 à cinq bits , qui était également utilisé par le système de téléimprimeur Telex concurrent . Bob Bemer a introduit des fonctionnalités telles que la séquence d'échappement . Son collègue britannique Hugh McGregor Ross a contribué à populariser ce travail - selon Bemer, « à tel point que le code qui allait devenir ASCII s'est d'abord appelé le code Bemer-Ross en Europe ». En raison de son travail approfondi sur l'ASCII, Bemer a été appelé "le père de l'ASCII".

Le 11 mars 1968, le président américain Lyndon B. Johnson a exigé que tous les ordinateurs achetés par le gouvernement fédéral des États-Unis prennent en charge l'ASCII, déclarant :

J'ai également approuvé les recommandations du secrétaire au Commerce [ Luther H. Hodges ] concernant les normes d'enregistrement du Code standard pour l'échange d'informations sur les bandes magnétiques et les bandes papier lorsqu'elles sont utilisées dans des opérations informatiques. Tous les ordinateurs et les configurations d'équipements connexes introduits dans l'inventaire du gouvernement fédéral à compter du 1er juillet 1969 doivent avoir la capacité d'utiliser le code standard pour l'échange d'informations et les formats prescrits par les normes de bande magnétique et de bande papier lorsque ces supports sont utilisés.

L'ASCII était le codage de caractères le plus courant sur le World Wide Web jusqu'en décembre 2007, lorsque le codage UTF-8 l'a dépassé ; UTF-8 est rétrocompatible avec ASCII.

Variantes et dérivations

Au fur et à mesure que la technologie informatique se répandait dans le monde, différents organismes et sociétés de normalisation ont développé de nombreuses variantes de l'ASCII pour faciliter l'expression de langues non anglaises utilisant des alphabets romains. On pourrait classer certaines de ces variantes comme des " extensions ASCII ", bien que certains utilisent à mauvais escient ce terme pour représenter toutes les variantes, y compris celles qui ne préservent pas la carte de caractères ASCII dans la plage de 7 bits. De plus, les extensions ASCII ont également été étiquetées à tort comme ASCII.

Codes à 7 bits

Dès le début de son développement, ASCII était destiné à n'être qu'une des nombreuses variantes nationales d'une norme internationale de code de caractères.

D'autres organismes internationaux de normalisation ont ratifié des codages de caractères tels que l' ISO 646 (1967) qui sont identiques ou presque identiques à l'ASCII, avec des extensions pour les caractères en dehors de l' alphabet anglais et des symboles utilisés en dehors des États-Unis, comme le symbole de la livre sterling du Royaume-Uni (£). Presque tous les pays avaient besoin d'une version adaptée de l'ASCII, car l'ASCII ne convenait qu'aux besoins des États-Unis et de quelques autres pays. Par exemple, le Canada avait sa propre version prenant en charge les caractères français.

De nombreux autres pays développés variantes de ASCII à inclure des lettres non anglaises (par exemple é , ñ , ß , Ł ), les symboles monétaires (par exemple £ , ¥ ), etc. Voir aussi YUSCII (Yougoslavie).

Il partagerait la plupart des caractères en commun, mais attribuerait d'autres caractères localement utiles à plusieurs points de code réservés à un "usage national". Cependant, les quatre années qui se sont écoulées entre la publication de l'ASCII-1963 et la première acceptation par l'ISO d'une recommandation internationale en 1967 ont fait que les choix de l'ASCII pour les caractères à usage national semblent être des normes de facto pour le monde, provoquant confusion et incompatibilité une fois que d'autres pays ont commencé à faire leurs propres affectations à ces points de code.

ISO/IEC 646, comme ASCII, est un jeu de caractères à 7 bits. Il ne rend aucun code supplémentaire disponible, de sorte que les mêmes points de code ont codé des caractères différents dans différents pays. Les codes d'échappement ont été définis pour indiquer quelle variante nationale s'appliquait à un morceau de texte, mais ils étaient rarement utilisés, il était donc souvent impossible de savoir avec quelle variante travailler et, par conséquent, quel caractère un code représentait, et en général, le texte- les systèmes de traitement ne pouvaient de toute façon faire face qu'à une seule variante.

Étant donné que les caractères entre crochets et accolades de l'ASCII ont été attribués à des points de code « à usage national » qui ont été utilisés pour les lettres accentuées dans d'autres variantes nationales d'ISO/IEC 646, un programmeur allemand, français ou suédois, etc. utilisant sa variante nationale d'ISO /IEC 646, plutôt que ASCII, devait écrire, et donc lire, quelque chose comme

ä aÄiÜ = 'Ön'; ü

à la place de

{ a[i] = '\n'; }

Les trigraphes C ont été créés pour résoudre ce problème pour ANSI C , bien que leur introduction tardive et leur implémentation incohérente dans les compilateurs aient limité leur utilisation. De nombreux programmeurs ont gardé leurs ordinateurs sur US-ASCII, donc texte brut en suédois, etc. allemand (par exemple, par courrier électronique ou Usenet ) contenu « {,} » et des variantes similaires dans le milieu des mots, quelque chose les programmeurs ont habitué. Par exemple, un programmeur suédois envoyant un courrier à un autre programmeur lui demandant s'il devait aller déjeuner, pourrait obtenir "N{ jag har sm|rg}sar" comme réponse, qui devrait être "Nä jag har smörgåsar" signifiant "Non, j'ai sandwichs".

Au Japon et en Corée, toujours à partir des années 2020, une variante de l'ASCII est utilisée, dans laquelle la barre oblique inverse (5C hexadécimal) est rendue par ¥ (un signe Yen , au Japon) ou ₩ (un signe Won , en Corée). Cela signifie que, par exemple, le chemin du fichier C:\Users\Smith est affiché sous la forme C:¥Users¥Smith (au Japon) ou C:₩Users₩Smith (en Corée).

Codes à 8 bits

Finalement, alors que les ordinateurs 8, 16 et 32 bits (et plus tard 64 bits ) ont commencé à remplacer les ordinateurs 12 , 18 et 36 bits en tant que norme, il est devenu courant d'utiliser un octet 8 bits pour stocker chacun caractère en mémoire, offrant une opportunité pour les parents étendus de 8 bits de l'ASCII. Dans la plupart des cas, ceux-ci se sont développés comme de véritables extensions de l'ASCII, laissant le mappage de caractères d'origine intact, mais en ajoutant des définitions de caractères supplémentaires après les 128 premiers caractères (c'est-à-dire 7 bits).

Les codages incluent ISCII (Inde), VISCII (Vietnam). Bien que ces codages soient parfois appelés ASCII, le véritable ASCII n'est défini strictement que par la norme ANSI.

La plupart des premiers systèmes informatiques domestiques développaient leurs propres jeux de caractères 8 bits contenant des dessins au trait et des glyphes de jeu, et remplissaient souvent certains ou tous les caractères de contrôle de 0 à 31 avec plus de graphiques. Les ordinateurs Kaypro CP/M utilisaient les 128 caractères "supérieurs" de l'alphabet grec.

Le code PETSCII utilisé par Commodore International pour ses systèmes 8 bits est probablement unique parmi les codes postérieurs à 1970 en ce qu'il est basé sur l'ASCII-1963, au lieu de l'ASCII-1967 plus courant, comme celui que l'on trouve sur l' ordinateur ZX Spectrum . Les ordinateurs Atari 8 bits et les ordinateurs Galaksija utilisaient également des variantes ASCII.

L'IBM PC a défini la page de codes 437 , qui a remplacé les caractères de contrôle par des symboles graphiques tels que des smileys , et mappé des caractères graphiques supplémentaires aux 128 positions supérieures. Les systèmes d'exploitation tels que DOS ont pris en charge ces pages de codes, et les fabricants de PC IBM les ont pris en charge dans le matériel. Digital Equipment Corporation a développé le jeu de caractères multinational (DEC-MCS) pour une utilisation dans le populaire terminal VT220 comme l'une des premières extensions conçues davantage pour les langues internationales que pour les blocs graphiques. Le Macintosh définissait Mac OS Roman et Postscript définissait également un jeu, les deux contenaient à la fois des lettres internationales et des signes de ponctuation typographiques au lieu de graphiques, plus comme des jeux de caractères modernes.

La norme ISO/IEC 8859 (dérivée du DEC-MCS) a finalement fourni une norme que la plupart des systèmes copiaient (au moins aussi précisément qu'ils copiaient l'ASCII, mais avec de nombreuses substitutions). Une autre extension populaire conçue par Microsoft, Windows-1252 (souvent mal étiquetée comme ISO-8859-1 ), a ajouté les signes de ponctuation typographiques nécessaires pour l'impression de texte traditionnelle. ISO-8859-1, Windows-1252 et l'ASCII 7 bits d'origine étaient les codages de caractères les plus courants jusqu'en 2008, lorsque UTF-8 est devenu plus courant.

ISO/IEC 4873 a introduit 32 codes de contrôle supplémentaires définis dans la plage hexadécimale 80-9F , dans le cadre de l'extension du codage ASCII 7 bits pour devenir un système 8 bits.

Unicode

Unicode et le jeu de caractères universel (UCS) ISO/IEC 10646 ont une gamme beaucoup plus large de caractères et leurs diverses formes de codage ont commencé à supplanter rapidement ISO/IEC 8859 et ASCII dans de nombreux environnements. Alors que l'ASCII est limité à 128 caractères, Unicode et l'UCS prennent en charge davantage de caractères en séparant les concepts d'identification unique (à l'aide de nombres naturels appelés points de code ) et d'encodage (aux formats binaires 8, 16 ou 32 bits, appelés UTF-8 , UTF-16 et UTF-32 ).

L'ASCII a été incorporé dans le jeu de caractères Unicode (1991) en tant que 128 premiers symboles, de sorte que les caractères ASCII 7 bits ont les mêmes codes numériques dans les deux jeux. Cela permet à UTF-8 d'être rétrocompatible avec l'ASCII 7 bits, car un fichier UTF-8 contenant uniquement des caractères ASCII est identique à un fichier ASCII contenant la même séquence de caractères. Plus important encore, la compatibilité ascendante est assurée en tant que logiciel qui reconnaît uniquement les caractères ASCII 7 bits comme spéciaux et ne modifie pas les octets avec le jeu de bits le plus élevé (comme cela est souvent fait pour prendre en charge les extensions ASCII 8 bits telles que ISO-8859-1). conservera les données UTF-8 inchangées.

Voir également

Remarques

Les références

Lectures complémentaires

Liens externes