Résumé

  • La RFC 1922 imposait à toute ligne ISO-2022-CN contenant des caractères chinois de répéter sa désignation et de repasser en ASCII avant CRLF. Le défilement ou une citation partielle ne dépendait plus d’un état caché dans une ligne antérieure.
  • Désigner un jeu, verrouiller un registre avec SO ou emprunter un caractère avec SS2/SS3 définissait l’interprétation des octets. Cela ne prouvait ni la livraison, ni la présence du glyphe, ni l’identité de l’auteur.
  • charset-edition et charset-extension rendaient les divergences de tables et d’ajouts locaux visibles. Ils décrivaient un risque d’interopérabilité sans le résoudre par décret.

Une parenthèse fermée à chaque CRLF

Une codification à états peut être parfaitement légale et pourtant devenir illisible dès qu’on l’ouvre au mauvais endroit. Si une séquence d’échappement située au début du message choisit le jeu actif pour cent lignes, une fenêtre affichant seulement la centième ne sait plus comment lire les octets. Le contenu est présent ; son mode d’emploi ne l’est plus.

Publiée en mars 1996 comme document Informational, la RFC 1922 fit de la ligne un point de reprise. ISO-2022-CN démarrait en ASCII. Une ligne chinoise répétait la désignation du jeu dont elle avait besoin. Avant CRLF, SI rétablissait l’ASCII. Chaque nouvelle ligne recommençait donc dans un état connu.

La répétition semblait coûteuse à une époque où chaque octet comptait. Elle achetait cependant une propriété plus importante : la lecture locale. Un lecteur pouvait faire défiler le message, un logiciel pouvait citer un extrait, et une corruption en amont ne changeait pas silencieusement l’alphabet de tout ce qui suivait. La redondance confinait l’erreur.

Désigner n’était pas encore afficher

Le mécanisme séparait le choix d’une table et le moment où cette table s’appliquait. Une séquence d’échappement désignait un jeu enregistré dans un registre. SO sélectionnait le jeu à deux octets ; SI revenait à l’ASCII. Une nouvelle désignation du même registre remplaçait la précédente.

SS2 et SS3 n’installaient pas durablement un nouvel état. Ils invoquaient le jeu correspondant pour les deux octets suivants, soit un caractère, puis rendaient la main à l’état SI/SO antérieur. Un journal qui ne conserve qu’un vague drapeau « chinois » efface cette différence entre choix durable, emprunt ponctuel et retour.

ISO-2022-CN-EXT élargissait la gamme de jeux et de plans enregistrés. Certaines formes d’échappement réservaient des caractères finaux encore non attribués. La RFC interdisait de les employer avant leur attribution par l’ISO. Une place prévue dans la syntaxe n’était pas une autorisation d’inventer une sémantique commune.

Le transport avait son propre contrat

Les deux formes ISO-2022-CN restaient sur sept bits. Leur octet de poids fort n’avait donc pas besoin d’être protégé par un Content-Transfer-Encoding uniquement pour franchir une messagerie à sept bits. Cela ne dispensait ni d’un libellé MIME exact ni d’un décodeur connaissant la grammaire.

CN-GB et CN-Big5 utilisaient huit bits. Sur une route ancienne, Base64 ou Quoted-Printable pouvait les emballer. Le transport direct exigeait que l’extension SMTP 8BITMIME ait réellement été négociée. Sans cela, un relais pouvait tronquer le huitième bit et livrer une suite devenue illisible.

Le nom de charset, le codage de transfert et la capacité SMTP constituaient trois preuves différentes. Le premier déclarait une interprétation attendue. Le deuxième protégeait la représentation. La troisième ouvrait un mode de transport. Aucun ne certifiait le glyphe final, la nationalité de l’expéditeur ou la compréhension du destinataire.

Une année limitait le désaccord

Les normes de caractères avaient plusieurs éditions. charset-edition permettait d’indiquer l’année de la table visée. Un logiciel comprenant le paramètre pouvait choisir la bonne édition. Un logiciel qui ne le comprenait pas devait l’ignorer ; il pouvait alors employer une édition plus ancienne et produire quelques erreurs circonscrites, plutôt que d’inventer un sens.

charset-extension nommait les ajouts de fournisseurs ou les répertoires locaux. Une valeur enregistrée ou un nom privé en x- révélait la dépendance. Mais nommer l’extension ne créait pas les glyphes absents ; la RFC reconnaissait même que ces extensions pouvaient nuire à l’interopérabilité.

Les conversions entre Big5 et CNS 11643 restaient ainsi à la charge des implémentations et de leurs tables. La validité des octets ne garantissait pas l’identité visuelle. Le choix d’un encodage pouvait suggérer une tradition graphique, jamais authentifier une personne ou un territoire.

La largeur de la ligne appartenait aussi au protocole vécu

Une séquence d’échappement prenait des octets mais aucune colonne. Un caractère chinois prenait normalement deux octets et deux colonnes. La RFC déconseillait de séparer ses deux octets et recommandait environ 75 colonnes visibles afin de laisser la place au chevron > des réponses citées.

Cette recommandation révélait une interopérabilité concrète. Un message correct au départ pouvait être abîmé par une opération ordinaire de courrier. Prévoir la citation et rétablir l’état à chaque ligne revenait à concevoir pour le logiciel réellement utilisé, pas pour un canal idéal.

Les sources établissent des règles, pas un recensement

Le texte principal est la RFC 1922. Les RFC 1468 et RFC 1557 donnent les précédents japonais et coréen des messageries à sept bits. La RFC 1521 fournit le cadre MIME de l’époque ; la RFC 1652, la frontière négociée de 8BITMIME ; la RFC 2046, une clarification MIME ultérieure. La RFC 3629 consigne ensuite la normalisation d’UTF-8.

Cette chronologie ne mesure aucune adoption. La RFC 1922 recommandait au minimum d’émettre et de recevoir ISO-2022-CN et de recevoir autant de formats décrits que possible. Elle ne prouvait la conformité d’aucun produit, ni une migration automatique et sans perte vers UTF-8. Sa rubrique de sécurité indiquait que le sujet n’était pas traité.

La primauté du code en fonctionnement offre une discipline d’analyse postérieure : le document décrit, tandis que parseurs, relais et polices produisent la réalité observable. Le principe de spécification initiale minimale, décision future localisée et adoption volontaire aide à voir le noyau commun : désignations, déplacements, plages d’octets et retours déterministes ; les répertoires et l’adoption restaient locaux. Ces notes n’établissent pas l’intention historique des auteurs.

En refermant l’état avant chaque fin de ligne, la RFC 1922 empêchait le passé invisible de gouverner le texte visible. Elle dépensait des octets pour rendre la reprise possible.