Xxencode et xxdecode

Encodez du texte, des octets hexadécimaux ou des fichiers avec xxencode, ou décodez des blocs xxencodés pour retrouver les données d’origine. L’alphabet n’utilise que des lettres, des chiffres, le plus et le moins.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Choisissez Encoder pour produire un bloc xxencodé, ou Décoder pour le reconvertir en données.
  2. Laissez l’option « Lignes begin / end » activée et renseignez le champ « Nom du fichier » pour obtenir un bloc complet, ou désactivez-la pour n’obtenir que les lignes de données.
  3. Saisissez ou collez votre entrée, ou ouvrez un fichier. Le résultat se met à jour pendant la saisie.
  4. Copiez le résultat ou téléchargez-le. Au décodage, choisissez la sortie Hexa ou téléchargez le fichier si les données ne sont pas du texte.

Qu’est-ce que xxencode ?

Xxencode conserve la structure de uuencode et ne change que les caractères. Chaque groupe de 3 octets devient toujours quatre valeurs de 6 bits, les lignes de données contiennent toujours au maximum 45 octets précédés d’un caractère de longueur, et le bloc se trouve toujours entre une ligne begin 644 name et une ligne end.

Les 64 valeurs correspondent à +, -, aux chiffres 0-9, aux lettres majuscules A-Z et aux lettres minuscules a-z, dans cet ordre. Le caractère de longueur utilise la même table : une ligne complète de 45 octets commence donc par h, et la ligne vide qui précède end se compose d’un seul +. Comme la structure est identique, la sortie a la même taille qu’avec uuencode : environ 38 % de plus que l’entrée, caractères de longueur et sauts de ligne compris.

Pourquoi xxencode a été créé

La sortie de uuencode regorge de signes de ponctuation comme [, ], \, ^ et !. Les mainframes IBM utilisent EBCDIC plutôt qu’ASCII, et ces caractères occupent des positions différentes selon les pages de code EBCDIC. Lorsque le courrier transitait par des passerelles entre réseaux ASCII et EBCDIC, ces caractères pouvaient être mal convertis, et le fichier était alors corrompu.

Les lettres, les chiffres, le plus et le moins sont identiques dans toutes les pages de code EBCDIC : le texte xxencodé se convertit donc proprement dans les deux sens. MIME a plus tard atteint le même objectif : Base64 n’utilise lui aussi que des lettres, des chiffres et quelques symboles identiques en ASCII et en EBCDIC. Xxencode n’est jamais devenu aussi courant que uuencode, et Base64 a fini par remplacer les deux.

Uuencode et xxencode côte à côte

UuencodeXxencode
CaractèresASCII 32 à 95, accent grave pour zéro+ - 0-9 A-Z a-z
Début d’une ligne complète de 45 octetsMh
Dernière ligne avant end`+
Résiste aux passerelles EBCDICNonOui

Spécifications

Alphabet+ - 0-9 A-Z a-z
Taille de sortieEnviron 137 %, préfixes de ligne compris
RemplissageLignes de 45 octets au maximum
Normexxencode
Sensible à la casseOui

Exemples

Entrée (UTF-8)Sortie
Hello, World!begin 644 data.bin BG4JgP4wg63RjQalY6E++ + end
Base64.isbegin 644 data.bin 7Ea3nNHMo9aZn + end
你好begin 644 data.bin 4t9qUtOKx + end

Questions fréquentes

Comment distinguer uuencode et xxencode ?
Regardez les lignes de données. Les lignes xxencodées ne contiennent que des lettres, des chiffres, des plus et des moins, et les lignes complètes commencent par h. Les lignes uuencodées contiennent de la ponctuation, et les lignes complètes commencent par M. Si le décodage échoue ici avec un caractère non valide, essayez la page uuencode.
L’outil écrit-il les lignes begin et end ?
Oui. Par défaut, il écrit begin 644 avec le nom de fichier que vous saisissez, ainsi que les lignes de fermeture. Désactivez l’option si vous n’avez besoin que des lignes de données encodées.
Puis-je décoder un bloc sans la ligne begin ?

Oui. Sans ligne begin, chaque ligne non vide est décodée comme des données. Avec une ligne begin, le décodage commence après elle et s’arrête à la ligne end : le texte environnant est ignoré.

Xxencode est-il encore utilisé ?
Rarement. On le trouve surtout dans d’anciennes archives de courrier et de news. Pour de nouvelles données, Base64 est pris en charge presque partout et tout aussi sûr pour les canaux limités au texte.