Code ASCII
Les 128 codes ASCII en décimal, hexadécimal, octal et binaire, avec l'entité HTML et l'échappement JS. Plus bas, la plage 128 à 255 de Windows-1252 et les codes Alt pour taper @, é, ç et d'autres caractères au clavier.
Colonnes
Cliquez sur une cellule pour copier sa valeur.
Table A : ASCII, de 0 à 127
128 codes sur 128
| Déc | Hexa | Oct | Binaire | Caractère | Description |
|---|---|---|---|---|---|
| ^@ caractère nul (NUL) | |||||
| ^A début d'en-tête (SOH) | |||||
| ^B début de texte (STX) | |||||
| ^C fin de texte (ETX), le Ctrl+C | |||||
| ^D fin de transmission (EOT), le Ctrl+D | |||||
| ^E demande (ENQ) | |||||
| ^F accusé de réception (ACK) | |||||
| ^G sonnerie (BEL) | |||||
| ^H retour arrière (BS) | |||||
| ^I tabulation (TAB) | |||||
| ^J saut de ligne (LF) | |||||
| ^K tabulation verticale (VT) | |||||
| ^L saut de page (FF) | |||||
| ^M retour chariot (CR) | |||||
| ^N shift out (SO) | |||||
| ^O shift in (SI) | |||||
| ^P échappement de liaison de données (DLE) | |||||
| ^Q commande d'appareil 1 (DC1), le XON | |||||
| ^R commande d'appareil 2 (DC2) | |||||
| ^S commande d'appareil 3 (DC3), le XOFF | |||||
| ^T commande d'appareil 4 (DC4) | |||||
| ^U accusé négatif (NAK) | |||||
| ^V synchronisation (SYN) | |||||
| ^W fin de bloc de transmission (ETB) | |||||
| ^X annulation (CAN) | |||||
| ^Y fin de support (EM) | |||||
| ^Z substitution (SUB), le Ctrl+Z | |||||
| ^[ échappement (ESC) | |||||
| ^\ séparateur de fichier (FS) | |||||
| ^] séparateur de groupe (GS) | |||||
| ^^ séparateur d'enregistrement (RS) | |||||
| ^_ séparateur d'unité (US) | |||||
| espace | |||||
| point d'exclamation | |||||
| guillemet double | |||||
| dièse | |||||
| dollar | |||||
| pourcentage | |||||
| esperluette | |||||
| apostrophe (guillemet simple) | |||||
| parenthèse ouvrante | |||||
| parenthèse fermante | |||||
| astérisque | |||||
| plus | |||||
| virgule | |||||
| tiret (signe moins) | |||||
| point | |||||
| barre oblique | |||||
| chiffre 0 | |||||
| chiffre 1 | |||||
| chiffre 2 | |||||
| chiffre 3 | |||||
| chiffre 4 | |||||
| chiffre 5 | |||||
| chiffre 6 | |||||
| chiffre 7 | |||||
| chiffre 8 | |||||
| chiffre 9 | |||||
| deux-points | |||||
| point-virgule | |||||
| inférieur à | |||||
| égal | |||||
| supérieur à | |||||
| point d'interrogation | |||||
| arobase | |||||
| lettre majuscule A | |||||
| lettre majuscule B | |||||
| lettre majuscule C | |||||
| lettre majuscule D | |||||
| lettre majuscule E | |||||
| lettre majuscule F | |||||
| lettre majuscule G | |||||
| lettre majuscule H | |||||
| lettre majuscule I | |||||
| lettre majuscule J | |||||
| lettre majuscule K | |||||
| lettre majuscule L | |||||
| lettre majuscule M | |||||
| lettre majuscule N | |||||
| lettre majuscule O | |||||
| lettre majuscule P | |||||
| lettre majuscule Q | |||||
| lettre majuscule R | |||||
| lettre majuscule S | |||||
| lettre majuscule T | |||||
| lettre majuscule U | |||||
| lettre majuscule V | |||||
| lettre majuscule W | |||||
| lettre majuscule X | |||||
| lettre majuscule Y | |||||
| lettre majuscule Z | |||||
| crochet ouvrant | |||||
| barre oblique inverse (antislash) | |||||
| crochet fermant | |||||
| accent circonflexe | |||||
| tiret bas (underscore) | |||||
| accent grave | |||||
| lettre minuscule a | |||||
| lettre minuscule b | |||||
| lettre minuscule c | |||||
| lettre minuscule d | |||||
| lettre minuscule e | |||||
| lettre minuscule f | |||||
| lettre minuscule g | |||||
| lettre minuscule h | |||||
| lettre minuscule i | |||||
| lettre minuscule j | |||||
| lettre minuscule k | |||||
| lettre minuscule l | |||||
| lettre minuscule m | |||||
| lettre minuscule n | |||||
| lettre minuscule o | |||||
| lettre minuscule p | |||||
| lettre minuscule q | |||||
| lettre minuscule r | |||||
| lettre minuscule s | |||||
| lettre minuscule t | |||||
| lettre minuscule u | |||||
| lettre minuscule v | |||||
| lettre minuscule w | |||||
| lettre minuscule x | |||||
| lettre minuscule y | |||||
| lettre minuscule z | |||||
| accolade ouvrante | |||||
| barre verticale (pipe) | |||||
| accolade fermante | |||||
| tilde | |||||
| ^? effacement (DEL) |
Table B : de 128 à 255
128 codes sur 128
| Déc | Hexa | Windows-1252 | ISO-8859-1 | Unicode | Octets UTF-8 | HTML | UTF-8 lu comme Windows-1252 |
|---|---|---|---|---|---|---|---|
| contrôle C1 | |||||||
| sans caractère | contrôle C1 | ||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| sans caractère | contrôle C1 | ||||||
| contrôle C1 | |||||||
| sans caractère | contrôle C1 | ||||||
| sans caractère | contrôle C1 | ||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
| sans caractère | contrôle C1 | ||||||
| contrôle C1 | |||||||
| contrôle C1 | |||||||
Cette plage n'est pas de l'ASCII. C'est ce qu'on appelle souvent l'ASCII étendu, et chaque table y met autre chose. La table montre Windows-1252 et ISO-8859-1 côte à côte, avec les octets UTF-8 et ce qui s'affiche quand l'UTF-8 est lu comme du Windows-1252.
Les codes 0x81, 0x8D, 0x8F, 0x90 et 0x9D n'ont pas de caractère en Windows-1252. En ISO-8859-1, toute la plage de 128 à 159 correspond à des contrôles C1.
Codes Alt sous Windows
Maintenez Alt et tapez le nombre sur le pavé numérique (la rangée de chiffres du haut ne marche pas). Sans zéro devant, Alt+NNN utilise la CP850, la page de codes de la console Windows en français, espagnol, portugais et allemand (aux États-Unis, c'est la CP437). Avec un zéro devant, Alt+0NNN utilise Windows-1252.
| Caractère | Alt+NNN (CP850) | Alt+0NNN (Windows-1252) |
|---|---|---|
| n'existe pas | ||
Ce qu'est l'ASCII
L'ASCII est une table de 128 codes, de 0 à 127, qui utilise 7 bits par caractère. Elle est née dans les années 1960 comme norme américaine (ANSI X3.4) et elle est décrite dans la RFC 20. On y trouve les lettres sans accent, les chiffres, la ponctuation et 33 caractères de contrôle qui ne s'affichent pas à l'écran.
Tout ce qui dépasse 127 n'est plus de l'ASCII, même quand on parle d'"ASCII étendu".
Les caractères de contrôle qu'on croise encore tous les jours
Parmi les 33 caractères de contrôle, la plupart sont tombés en désuétude, mais quelques-uns reviennent chaque semaine. NUL (0) marque la fin d'une chaîne en C et apparaît dans les fichiers binaires. TAB (9) est la tabulation. LF (10) et CR (13) forment le saut de ligne : Linux et macOS utilisent seulement LF, Windows utilise la paire CR et LF (CRLF). ESC (27) ouvre les séquences de couleur du terminal, et DEL (127) est le seul contrôle hors de la plage 0 à 31.
Cette différence de saut de ligne cause de vrais bugs, comme un script shell qui ne s'exécute pas à cause d'un CR en fin de ligne. Git peut convertir au commit et au checkout selon core.autocrlf : true sous Windows et input sous Mac et Linux règle en général le problème. Dans un CSV, un saut de ligne à l'intérieur d'un champ n'est bien lu que si le champ est entre guillemets.
git config --global core.autocrlf inputIl n'existe pas un seul "ASCII étendu"
Quand on parle d'"ASCII étendu", on pense presque toujours à l'une de trois tables : ISO-8859-1, Windows-1252 ou CP850. Elles coïncident de 0 à 127 et diffèrent au-delà. Et le navigateur ne traite même pas "latin1" comme de l'ISO-8859-1 : selon l'Encoding Standard du WHATWG, "latin1", "iso-8859-1" et même "ascii" sont lus comme du Windows-1252.
L'ISO-8859-1 (de 1987) utilise 128 à 159 pour des contrôles C1, que personne ne tape. Windows-1252 met des symboles utiles dans ces 32 codes, comme €, “ ”, … et •, et n'en laisse que cinq vides. La CP850 est autre chose : c'est la page de codes de la console Windows et des codes Alt, et là le "ç" vaut 135, pas 231.
Quand il vous faut l'une de ces tables, donnez son nom. "ASCII" ne va que jusqu'à 127.
ASCII, Unicode et UTF-8
Unicode est la liste de tous les caractères, et UTF-8 est la façon la plus courante de les stocker en octets. De 0 à 127, UTF-8 utilise un octet de même valeur que l'ASCII, donc un fichier uniquement ASCII est identique dans les deux. Au-delà, chaque caractère prend de 2 à 4 octets : une lettre accentuée en prend 2, un symbole comme € en prend 3 et un emoji en prend 4.
Cela compte quand la limite est en octets, comme une colonne de base de données ou un header. Le Compteur de Caractères et de Mots affiche les deux nombres côte à côte. En JavaScript, notez que length compte des code units, pas des caractères ni des octets :
"ç".length // 1
new TextEncoder().encode("ç").length // 2
"😀".length // 2
new TextEncoder().encode("😀").length // 4Pourquoi le "ç" devient "ç"
Le "ç" en UTF-8 occupe deux octets, C3 et A7. Si un programme lit ces octets comme du Windows-1252, chaque octet devient un caractère : C3 est "Ã" et A7 est "§". D'où le "ç" à la place du "ç". Presque toujours, l'un des deux bouts est mal configuré : la base en latin1, le CSV enregistré sans BOM, le header Content-Type sans charset ou le fichier enregistré en "ANSI".
Les causes les plus courantes :
- Une table MySQL en
latin1au lieu deutf8mb4. La donnée entre bien et sort mal, ou l'inverse. - Un CSV en UTF-8 ouvert dans Excel sans BOM. Excel suppose la page de codes de Windows et affiche du mojibake.
- Une réponse HTTP sans
charsetdans le headerContent-Type. Le navigateur devine l'encodage. - Un fichier enregistré en "ANSI", qui sous Windows en français correspond à Windows-1252.
btoan'accepte que des caractères jusqu'à 255.btoa("€")lèveInvalidCharacterError, etbtoa("é")fonctionne mais encode l'octet E9 (latin1), pas C3 A9 (UTF-8). Pour du Base64 d'UTF-8, convertissez d'abord en octets. Le Décodeur Base64 le fait.
btoa("€"); // InvalidCharacterError
btoa("ç"); // "5w==" (byte E7)
btoa(String.fromCharCode(...new TextEncoder().encode("ç"))); // "w6c=" (bytes C3 A7)ALTER TABLE clientes CONVERT TO CHARACTER SET utf8mb4;Le hash a le même problème : le SHA-256 de "ç" n'est pas le même en latin1 (octet E7) et en UTF-8 (octets C3 A7). Si un hash ne correspond pas à celui d'un autre système, vérifiez l'encodage du texte dans le Générateur de Hash.
L'ASCII dans le code
La table explique des astuces présentes dans toutes sortes de code. Majuscules et minuscules diffèrent de 32 (un seul bit), et les chiffres "0" à "9" occupent 48 à 57, donc c - '0' en C ou Java transforme le caractère en nombre. En regex, [ -~] capture les imprimables, de l'espace (32) au tilde (126).
"a".charCodeAt(0) - "A".charCodeAt(0); // 32
"7".charCodeAt(0) - "0".charCodeAt(0); // 7
/^[ -~]*$/.test("Olá"); // false
"B".charCodeAt(0) - 48; // 18Le CNPJ alphanumérique brésilien reprend la même idée. Pour calculer le chiffre de contrôle, chaque caractère vaut son code ASCII moins 48 : "0" à "9" valent toujours 0 à 9, "A" vaut 17, "B" vaut 18 et ainsi de suite jusqu'à "Z", qui vaut 42. Pour le voir à l'œuvre, utilisez le Générateur de CNPJ ou vérifiez un numéro dans le Validateur de CNPJ.
Entités HTML et échappements
En HTML, une entité n'est nécessaire que pour les caractères que le parser lit comme du balisage : &, < et >, plus " dans un attribut. est l'espace insécable, le code 160, et il n'est pas identique à l'espace normal (32).
Avec la page en UTF-8, accents et symboles peuvent aller directement dans le HTML : pas besoin de é ni de é. En JavaScript et en JSON, l'échappement \u00e9 sert quand le fichier n'est pas en UTF-8, et \n, \t et \ sont les formes courtes. Dans une URL, le "é" devient %C3%A9, ses octets UTF-8.
Codes Alt sous Windows
Le code Alt n'est pas de l'ASCII. Alt+NNN, sans zéro, utilise la CP850 sous Windows en français, espagnol, portugais et allemand : Alt+130 tape le "é" et Alt+64 tape l'arobase. Alt+0NNN, avec un zéro devant, utilise Windows-1252 : Alt+0233 tape le même "é". Le nombre change parce que la table change.
Tapez toujours sur le pavé numérique, avec Verr Num activé. Sur un portable sans pavé numérique, le plus simple est de copier le caractère depuis la table ci-dessus.
Sources
Vérifiées le 3 novembre 2026 :