ASCII, Unicode et UTF-8 : quelles différences ?
ASCII est un répertoire de 128 codes. Unicode couvre un ensemble bien plus vaste de caractères. UTF-8 encode les points de code Unicode en octets. Aucun de ces termes ne désigne une police ni ne garantit la largeur d’un dessin.
Choisir pour son dessin
| Besoin | Choix | Contrôle |
|---|---|---|
| TXT, terminal | ASCII | Espaces / spacing |
| ♥, ─, █ | Unicode + UTF-8 | Police / font |
| Visuel fixe / fixed image | PNG | Texte alternatif / alt text |
Pour un logo composé de /, _, | et lettres, l’ASCII suffit. Pour des cadres continus en ─ et │, utilisez Unicode et vérifiez la police du lecteur. Le choix dépend des caractères nécessaires, pas du prestige supposé d’un format.
Caractères et octets : quatre cas concrets
| Texte | Unicode | UTF-8 hex | Octets |
|---|---|---|---|
| A | U+0041 | 41 | 1 |
| é | U+00E9 | C3 A9 | 2 |
| é | U+0065 + U+0301 | 65 CC 81 | 3 |
| ♥ | U+2665 | E2 99 A5 | 3 |
Premier cas : A conserve le même code numérique en ASCII et Unicode, et occupe un octet UTF-8. Second cas : é peut être représenté par U+00E9 ou par e suivi de l’accent combinant U+0301. Les deux lignes du tableau peuvent sembler identiques tout en contenant des suites de points de code différentes. Les octets sont calculables avec text.encode("utf-8") en Python.
for text in ["A", "é", "é", "♥"]:
print(repr(text), text.encode("utf-8").hex(" "))Pourquoi le compteur et l’écran diffèrent
Le compteur du diagnostic ArtASCII compte les points de code, pas les cellules du terminal. Un accent combinant peut se superposer au caractère précédent ; certains caractères occupent une largeur différente selon la police et l’application. La propriété East Asian Width apporte une classification, sans constituer à elle seule un moteur universel de mise en page. Ne calculez donc pas un cadre Unicode uniquement avec la longueur d’une chaîne.
Éviter les confusions fréquentes
Un fichier .txt peut contenir de l’Unicode : l’extension ne définit pas son encodage. Une police monospace ne convertit pas ♥ en ASCII. Enregistrer du texte ASCII en UTF-8 reste compatible pour ces caractères. En revanche, supprimer tous les accents modifie le texte ; faites-le volontairement, en conservant l’original. Pour une bannière FIGlet, la couverture de la police constitue une autre question que l’encodage du fichier.