Émission Underscore #230 du 23 mai 2021

Actu

Les FAILs du mois

Chiptune: Insert No Coins – Razor1911

Sujet : Le codage des caractères

Avant l’ASCII

Pour rappel, depuis Ada Lovelace on sait qu’un ordinateur peut manipuler autre chose que des nombres, à condition que l’on transcrive ces autres choses en nombres avant.

L’unité la plus pratique au début de la micro-informatique était l’octet, un paquet de 8 bits pouvant chacun être un 1 ou un 0.
On peut ainsi avoir une valeur de 0 à 255.

Si on décide que chaque lettre a une de ces valeurs, on peut ainsi coder une chaîne de caractères comme une suite d’octets.

Alors c’est bon, on a 26 lettres dans l’alphabet, plus 10 chiffres… et il reste largement la place pour la ponctuation non ?

Oui et non… On a aussi les majuscules déjà… En fait les premiers micro-ordinateurs ne géraient pas tous les minuscules.

Et puis, dans quel ordre mettre tout ça ?

Dès le début, chacun a fait plus ou moins seul dans son coin.

Par exemple chez IBM ils ont pondu l’EBCDIC : Extended Binary Coded Decimal Interchange Code. Notez que le nom indique déjà que c’est une extension d’un codage existant, utilisé pour les cartes perforées. Il en existait déjà 6 variantes plus ou moins compatibles entre elles.

Commodore a aussi sorti un codage pour son PET, le PETSCII.

Et les services dérivés de Videotex ont aussi eu droit à leur propre codage, par exemple CEPT2 pour le Minitel.

American Standard Code for Information Interchange (ASCII)

L’ASCII apparut également dans les années 1960, créé par l’ancêtre de l’ANSI.

En fait le standard ne définit que les 128 premiers caractères, souvent nommé ASCII-7 (puisque seuls 7 bits suffisent).

Il comprend des caractères de contrôle (retour à la ligne, tabulation…), les chiffres, les caractères latins… Tout ce qu’il faut pour l’anglais.

Les pages de code

Sauf que lorsque l’on veut utiliser un ordinateur dans une autre langue, il devient nécessaire de coder les autres caractères. Pour les langues latines comme le français on peut encore faire sans les accents, mais pour le cyrillique ou les idéogrammes…

Pour les langues européennes des extensions spécifiques à l’ASCII-7 ont été créées, avec plusieurs dénominations, comme les « pages de code » sous MS-DOS, utilisant les 128 autres valeurs des octets.
L’Atari ST avait sa propre extension de l’ASCII également.

L’inconvénient étant qu’un texte rédigé dans une page de code ne peut pas être exprimé dans une autre.

Les codages asiatiques

En Asie où de nombreuses langues utilisent des idéogrammes, le nombre de caractères est bien plus important, et plusieurs codages spécifiques ont été créé comme Shift-JIS, qui utilise un nombre d’octets variable.

Unicode

Le standard Unicode a été construit pour reprendre l’ASCII et toutes les pages de codes existantes, en élargissant les valeurs possibles.

En effet, il n’est pas limité à 256 caractères. S’il a commencé avec 65536 possibilités (sur 16 bits), plusieurs « plans » ont été rajoutés, et la version 13 publiée l’an dernier en est à 143859 caractères (certains emplacements sont réservés mais non utilisés).

Ils comprennent 150 écritures différentes, ainsi que des symboles pour de nombreux domaines (dessin industriel, musique…), ainsi que bien sûr un nombre toujours grandissant d’émoji… Mais toujours pas le Klingon 🙁

Il existe cependant une partie « à usage privé » qui peut être utilisé différemment par chaque police de caractères (c’est ce qu’utilise Apple pour caser son logo par exemple).
Un registre alternatif existe pour cette partie, qui inclut le Klingon.

Les codages d’Unicode (UCS-2, UTF-8…)

Jusqu’ici nous n’avions pas fait la différence entre jeu de caractères (charset en anglais) et codage (encoding en anglais).

Le jeu de caractère est la liste des caractères utilisables avec leur numéro d’ordre, c’est ce que définit Unicode par exemple, alors que le codage est la façon de stocker ceux-ci en mémoire.

Pour Unicode il en existe plusieurs très différents.

Certains ont une taille fixe, comme UCS-2, qui utilise 16 bits par caractères. Ou UCS-4 pour 4 octets, donc 32 bits. Malheureusement même 4 octets ne sont plus suffisants pour coder tout Unicode maintenant.

De plus, puisqu’on utilise plusieurs octets, il y a différentes façons de les ordonner (on parle d’endian ou de boutisme au Québec). Il y a donc un caractères spécial, le Byte Order Mark qui sert à détecter l’ordre des octets dans ce cas.

Il y a aussi une autre famille de codages, Unicode Transformation Format, qui utilise une longueur variable de mots, des octets pour UTF-8, ou plus large pour UTF-16 qui reprend UCS-2.
UTF-8 nous vient de Plan9.

On note que Windows NT en interne utilise UCS-2, puis UTF-16 depuis Windows 2000, alors que la plupart des autres OS utilisent UTF-8. Microsoft n’a que très récemment recommandé d’utiliser UTF-8.

Chaque caractère peut faire ainsi 1, 2, 3 voire 4 octets ou plus, en fonction de son numéro Unicode. Sans rentrer dans les détails, c’est un peu la prise de tête lorsque l’on souhaite compter le nombre de caractères dans une chaîne, du coup.

Un autre détail en plus : Il existe plusieurs façons pour noter les caractères accentués. En effet, un « e accent aigu » peut être soit le caractère U+00E9 (e accent aigu), soit la suite U+0065 (la lettre e) et U+0301 pour l’accent aigu, qui se combine au caractère précédant.
C’est la différence entre macOS, qui utilise le format NFD (décomposé, c’est à dire avec l’accent séparé), et tout le reste du monde qui utilise le format NFC.

Bref, toutes ces différences malgré un même standard expliquent que parfois on ait du mal à lire un fichier texte, puisqu’il faut parfois deviner le jeu de caractère, le codage, et d’autres paramètres…

Chiptune: Generation by Uctumi

Agenda

Rappelons que l’agenda est celui de la semaine passée lors des rediffusions le samedi.

Libre Graphics Meeting

Le Libre Graphics Meeting (LGM) est une réunion annuelle sur les logiciels libres.
Organisé chaque année depuis 2006, le Libre Graphics Meeting vise à attirer les développeurs, les artistes et les professionnels qui utilisent et améliorent les applications graphiques de logiciels libres.
LGM favorise les discussions entre les développeurs de logiciels, les utilisateurs et le grand croisement de ces deux catégories. Contrairement à de nombreux événements consacrés aux logiciels libres, LGM a toujours eu une forte orientation artistique, avec des designers et des artistes présentant leur travail aux côtés du travail des développeurs de logiciels.

Du 27 au 30 mai ;
en ligne et à distance.

Cédille Tour – Le Royan

Cédille vous propose de (re)découvrir les tiers-lieux du Royans !
3 visites de lieux, présentations des activités et échanges avec les équipes de : Le Chalutier, Le Hublot, La Place des Possibles.
Port du masque obligatoire

Vendredi 28 mai, 9h30 – 13h30.

Webinaire Sexe et Genre : Numérique : compter avec les femmes

Dans cette intervention, Anne-Marie KERMARREC, professeure en informatique à l’école Polytechnique Fédérale de Lausanne, dressera un état des lieux des amours compliquées entre le numérique et les femmes, du manque de féminisation de ce secteur si prometteur, mettra en lumière quelques pionnières du domaine et proposera quelques pistes pour accélérer le changement.

28 mai 2021, 14h – 16h30
Gratuit, en ligne.

Assemblée générale annuelle 2021 de FACiL

L’AG de FACiL, l’association pour l’appropriation collective de l’informatique libre.

En ligne ;
Samedi 29 mai 2021 de 10h00 à 12h00 (heures de Montréal).

Du lien et des liens

ASCIIFlow, pour faire de l’art ASCII en ligne.

Le projet du mois chez OpenStreetMap : cartographier les labos d’analyses médicales, c’est d’autant plus utile en ce moment avec les tests Covid !

Un site géré par l’INSEE permet de vérifier votre situation pour les prochaines élections.

Vous voulez découvrir facilement des musiques libres sympa ? Abonnez-vous au flux RSS du site auboutdufil.com .
Chaque lundi, Éric ou Alice font découvrir une nouvelle pépite musicale libre.
Il y a aussi un flux RSS pour vos lecteurs de podcast.

Astrologeek

  • sysadmin : – Leeloo Dallas ProxyPass !!! – Mais oui, elle sait ce que c’est qu’un ProxyPass !
  • macounet : Je suis sans voix… ou plutôt je suis iphone
  • technophile : L’UTF-8 c’est mieux, ASCII parait.
  • musicien : C’est trop tendu les cordes, donne-moi un peu de moog !
  • électronicien : Tous ces transistors… C’est la FET à la maison ?
  • youtubeur : C’est filmé en bullet-time ? Non, en Belett-time !