Résumé
- RFC 1468 a défini
ISO-2022-JPcomme un profil commutable à sept bits : quatre désignateurs choisissaient ASCII, le romain JIS X 0201 ou deux versions de JIS X 0208, et toute ligne en double octet devait quitter cet état avant CRLF. - L’étiquette MIME indiquait le contrat de décodage attendu ; elle ne prouvait ni la conformité du corps, ni la conservation des séquences par les relais, ni l’identité des caractères reconstruits, ni ce que l’écran avait montré au lecteur.
Un relais pouvait afficher deux messages de la même façon et ne pas avoir le droit de transformer l’un en l’autre. Cette règle, glissée au cœur de RFC 1468, révèle mieux le projet que le nom devenu célèbre.
Le document paraît en juin 1993. Il décrit une pratique née sur JUNET et déjà utilisée dans plusieurs communautés IP japonaises. Son statut, consigné par le RFC Editor, reste Informational : il ne proclame pas une norme Internet. Pourtant, il rend partageable un accord très concret. Le courrier peut rester composé de valeurs sur sept bits tout en portant du kanji, du hiragana, du katakana et d’autres signes, si l’expéditeur et le destinataire reproduisent exactement la même succession d’états.
L’histoire n’est donc pas celle d’une simple table de caractères. C’est celle d’un automate discret, logé dans le texte, que les machines intermédiaires devaient transporter sans s’en attribuer le sens.
Quatre portes dans un même flux
Au départ, l’interprétation est ASCII. ESC $ B désigne JIS X 0208-1983 ; ESC $ @, la version 1978. Après l’une de ces séquences, chaque caractère occupe deux octets compris dans un espace de 94 valeurs par position. ESC ( B rétablit ASCII. ESC ( J choisit le jeu romain de JIS X 0201.
Ces marques ne sont pas des annotations extérieures. Elles consomment elles-mêmes des octets et modifient le sens de ceux qui suivent. Une paire valide dans l’état JIS X 0208 ne constitue plus le même objet une fois revenue sous ASCII. Pour comprendre un emplacement, le décodeur doit connaître la dernière transition licite. La valeur isolée ne suffit pas.
Même les deux états mono-octet ne se confondent pas. Dans JIS X 0201 Roman, les positions de la barre oblique inverse et du tilde correspondent au yen et au surlignement. Une police peut masquer la différence ; le profil, lui, la conserve. Quant au jeu Kana de JIS X 0201, il est explicitement exclu. Le mot « japonais » dans le nom n’autorisait pas toute représentation japonaise disponible sur une machine.
Voilà la force d’un profil étroit. Il réduit l’espace dans lequel deux programmes peuvent raisonnablement diverger. ISO-2022-JP n’était pas une invitation à deviner ; c’était le nom d’un mécanisme déterminé.
La fin de ligne servait de point de reprise
Lorsqu’une ligne contient des caractères JIS X 0208, elle doit revenir à ASCII ou au romain JIS X 0201 avant CRLF. La ligne suivante commence donc dans l’état mono-octet choisi juste avant la fin de la précédente. Le texte entier doit, lui, se terminer en ASCII.
La contrainte paraît coûteuse : les mêmes séquences peuvent se répéter à chaque ligne. Elle achète pourtant une propriété essentielle. Un lecteur aléatoire, un outil de citation qui ajoute > ou un affichage qui reprend au milieu du message n’a pas à remonter indéfiniment pour découvrir si deux octets appartiennent encore à un caractère japonais. L’erreur d’état est contenue par une frontière déjà familière aux logiciels de courrier.
La reprise n’est pas parfaite. Le retour au romain JIS X 0201 laisse subsister la différence yen/barre oblique inverse. Une séquence tronquée peut encore susciter des politiques d’erreur incompatibles. Mais le profil empêche l’état double-octet de traverser silencieusement la ligne. Il transforme CRLF en limite de propagation d’une interprétation.
Ce choix illustre une coordination minimale. Le réseau n’avait pas besoin de savoir lire le japonais. L’expéditeur devait produire une forme bornée ; les relais devaient la respecter ; le destinataire pouvait reconstruire localement. L’intelligence demeurait aux extrémités, tandis que le contrat commun restait assez petit pour les voies existantes.
Sept bits ne signifiaient pas « sans risque »
L’exemple MIME est simple : Content-Type: text/plain; charset=iso-2022-jp. Puisque la représentation tient déjà sur sept bits, aucune couche de transfert supplémentaire n’est nécessaire pour franchir un transport ancien.
Cette compatibilité concerne la largeur des valeurs, pas leur fonction. Supprimer un octet ESC, modifier un désignateur, couper une paire ou normaliser une fin de ligne peut conserver un fichier parfaitement « sept bits » tout en détruisant son sens. Un chemin accepte les octets ; seul le décodeur, avec leur ordre, reconstitue les caractères.
Le RFC signale aussi que Base64 ou quoted-printable rendraient le message illisible dans les logiciels JUNET alors courants. Il faut garder la date dans la phrase. Une transformation MIME correctement inversée peut préserver tous les octets ; ce sont les programmes effectivement déployés en 1993 qui ne savaient pas forcément combiner les deux couches. La réversibilité théorique n’était pas encore une interopérabilité opérationnelle.
La distinction rejoint RFC 2046, qui présente le paramètre charset comme critique pour le texte MIME et maintient les règles de ligne. Nommer un charset établit la façon dont le corps prétend être lu. Cela ne certifie ni le transport effectué, ni le programme qui le lira.
Le relais n’était pas un éditeur
Certains systèmes, dit RFC 1468, ne distinguaient pas à l’affichage ESC ( B de ESC ( J, ni ESC $ @ de ESC $ B. Malgré cette apparente équivalence, le relais ne devait altérer aucune séquence d’échappement.
La raison dépasse le respect littéral. L’écran du relais ne connaissait ni la police future, ni les tables d’un autre client, ni les besoins d’un archiviste. Il ne pouvait transformer sa propre indifférence en vérité universelle. Ce qui paraît identique dans un rendu peut rester différent dans la preuve transmise.
Conserver le flux brut maintient aussi la possibilité d’expliquer un échec. Si le destinataire voit un autre signe, on peut comparer ce qui a été envoyé, ce qui a traversé chaque intermédiaire, ce que le décodeur a produit et ce que la police a dessiné. Dès qu’un relais « nettoie » les données, ces responsabilités se superposent. Une copie visuellement plus jolie peut devenir historiquement moins fidèle.
Cette obligation de garde n’authentifie pas l’auteur et ne rend pas le message vrai. Elle interdit seulement à l’intermédiaire de substituer son interprétation à l’objet reçu.
L’octet, le caractère et la colonne
Le document conseille environ 75 à 80 colonnes visibles afin de laisser de la place aux marques de citation. Dans son modèle, un caractère JIS X 0208 occupe deux octets et deux colonnes ; une séquence d’échappement occupe plusieurs octets et aucune colonne. Un logiciel d’affichage ne doit pas couper la paire en son milieu.
Une ligne possède donc plusieurs géométries. L’offset d’octet sert à vérifier et à archiver. La position du caractère apparaît après décodage. La colonne dépend du rendu. Elles coïncident pendant une suite ASCII, puis divergent à la première transition. Couper au 80e octet n’équivaut pas à couper à la 80e colonne. Retirer tout contrôle non imprimable avant validation peut effacer précisément la donnée qui donne un sens au reste.
Une capture d’écran démontre un résultat graphique situé. Elle ne restitue pas automatiquement les octets. Un hachage du corps démontre l’identité de la représentation, pas le glyphe choisi par une police. La preuve devient solide lorsque ces objets sont liés sans être confondus.
Le registre fixait la règle du nom
RFC 2978 donnera plus tard une définition particulièrement utile : un charset est une méthode de conversion d’une séquence d’octets en caractères, et cette méthode peut recourir aux commutations complexes d’ISO 2022. La spécification associée au nom doit déterminer complètement la conversion.
Le registre IANA des jeux de caractères conserve ISO-2022-JP sous le numéro 39 et cite RFC 1468 ainsi que RFC 2237. Il conserve séparément ISO-2022-JP-2 sous le numéro 40. Le registre évite qu’un même nom désigne volontairement deux machines incompatibles. Il ne lance aucune de ces machines et n’inspecte aucun message.
Cette séparation protège les mots contre une inflation de pouvoir. L’inscription atteste une coordination de nomenclature. Elle ne prouve pas qu’un corps est conforme, qu’un produit est exempt de bogue ou qu’un usage est encore répandu. De même, le statut Informational décrit la place éditoriale du document ; il n’annule pas l’usage historique qui avait motivé sa rédaction.
Agrandir le profil obligeait à le renommer
RFC 1554, publié en décembre 1993, décrit ISO-2022-JP-2, une extension multilingue expérimentale. Elle ajoute des désignations chinoises, coréennes, japonaises supplémentaires, grecques et latines, ainsi qu’un second registre d’état dont certaines informations sont effacées en début de ligne. L’automate devient plus riche et reçoit un autre nom.
En 1997, RFC 2237 crée ISO-2022-JP-1 pour JIS X 0212 avec ESC $ ( D. Le texte doit encore finir en ASCII ; si aucun caractère JIS X 0212 n’est présent, le document exige le profil ordinaire ISO-2022-JP.
Nommer séparément ces extensions permet à un ancien destinataire de refuser un contrat qu’il ne comprend pas, au lieu de traiter une nouveauté comme une erreur mystérieuse sous une étiquette familière. L’évolution demeure possible, mais elle ne réécrit pas rétroactivement le sens du corpus antérieur.
Où s’arrête la preuve
Pour les trois textes doctrinaux de Heng Lu, l’intérêt de ce mécanisme est précisément sa modestie. Minimum Initial Specification montre comment un noyau commun limité laisse aux mises en œuvre leur décision locale. Running-Code Primacy empêche de prendre la publication pour le déploiement. On Reality Layers interdit de fondre l’étiquette, les octets, les caractères décodés, les glyphes et la réaction humaine en une seule réalité.
RFC 1468 ne garantissait donc pas que tout lecteur verrait le texte voulu. Il distribuait les responsabilités : un nom public pour choisir la règle, un flux étroit pour la transporter, des transitions exactes pour lui donner un état, des limites de ligne pour la reprendre, et une exécution locale pour produire le résultat. Son succès tenait à ce que chacun de ces pouvoirs restait plus petit que le suivant.
Briefing des membres
Contexte approfondi du profil
Connectez-vous avec le bon niveau d'adhésion pour débloquer le briefing complet et les notes de source.
Réservé à Strategic Circle
Strategic Circle
Ouvert à tous les lecteurs. Débloquez les briefings de profil après adhésion et connexion.
Rejoindre Strategic CircleRéservé aux membres de Leadership Alliance
Leadership Alliance
Réservé aux propriétaires et dirigeants qualifiés d'actifs IP ; connectez-vous pour débloquer les briefings Alliance.
Rejoindre Leadership Alliance
