ASCII et Unicode sont deux normes fondamentales pour la représentation numérique des caractères textuels. Bien qu'elles partagent un objectif commun, elles diffèrent profondément par leur portée et leurs capacités, reflétant leur contexte historique de création.
Le standard ASCII (American Standard Code for Information Interchange) a été conçu principalement pour l'anglais et l'alphabet latin non accentué. Il encode 128 caractères, incluant les lettres A-Z et a-z, les chiffres, des symboles de ponctuation et des caractères de contrôle.

ASCII ne supporte pas les accents ou caractères d'autres langues, comme le « é » dans café, obligeant à des adaptations (ex. : cafe). Des extensions locales ont émergé, mais elles ont compliqué l'interopérabilité et révélé les limites d'ASCII.
À l'opposé, Unicode ambitionne de couvrir tous les systèmes d'écriture mondiaux, des langues anciennes aux emojis modernes, pour une universalité maximale.
Un jeu de caractères définit un ensemble de symboles (ex. : A-Z). Un encodage les associe à des valeurs numériques (ex. : A=65).
ASCII combine les deux : il définit 128 caractères et leur mapping sur 7 bits.
Unicode est plus nuancé : il désigne souvent le vaste jeu de caractères (plus de 149 000 encodés à ce jour), tandis que ses encodages (UTF-8, UTF-16, UTF-32) gèrent le mapping. UTF-8 domine par sa compatibilité et efficacité.
ASCII est limité à 128 caractères (7 bits, extensible à 256 avec 8 bits). Unicode supporte 1 114 112 points de code potentiels, avec 154 scripts actifs en 2023 (contre 1 pour ASCII : latin basique).

ASCII utilise 1 octet par caractère (7 bits effectifs), rendant les calculs de taille simples : nombre de caractères = octets.
$ echo -n 'Hello, world!' > fooVérification :
$ file foo
foo: ASCII text$ stat -f%z foo
13Pour Unicode (ex. €, non-ASCII) :
$ echo -n '€' > foo
$ file foo
foo: UTF-8 Unicode text
$ stat -f%z foo
3UTF-8 est à largeur variable (1-4 octets/caractère), optimisant l'espace pour les caractères latins courants tout en supportant l'universel. Cela complexifie les calculs de longueur.
Les 128 premiers points de code Unicode correspondent exactement à ASCII, et UTF-8 encode ces caractères en 1 octet. Tout fichier ASCII est valide en UTF-8. Inversement, un fichier Unicode avec caractères étendus échouera en ASCII (affichage corrompu).
ASCII est obsolète, sauf pour les systèmes legacy. UTF-8 est la norme (HTML5 par défaut), compatible ASCII et universelle, même pour le latin seul.
Dernière mise à jour ASCII : 1986. Unicode évolue annuellement, ajoutant scripts, symboles et emojis (Unicode 15.0 en 2023).
ASCII a posé les bases, mais Unicode l'a supplanté pour sa flexibilité globale, malgré une complexité accrue. Idéal pour le web, apps et données internationales.
[]