Encodeur et décodeur Base91

Convertissez du texte, des octets hexadécimaux ou des fichiers en basE91, et inversement. basE91 regroupe les données binaires dans 91 caractères ASCII imprimables et produit une sortie plus courte que Base64 ou Base85.

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

Mode d’emploi

  1. Choisissez Encoder pour transformer du texte ou des octets en basE91, ou Décoder pour reconvertir du basE91 en données.
  2. Saisissez ou collez votre entrée, ou ouvrez un fichier. Passez l’entrée en Hexa pour des octets bruts.
  3. Le résultat se met à jour pendant la saisie. Au décodage, choisissez la sortie Texte ou Hexa.
  4. Copiez le résultat ou téléchargez-le sous forme de fichier.

Qu’est-ce que basE91 ?

basE91 est un encodage binaire-texte conçu par Joachim Henke. Il utilise 91 des 95 caractères ASCII imprimables : tous sauf l’espace, l’apostrophe ', le trait d’union - et la barre oblique inverse \.

Il ne travaille pas sur des blocs d’octets de taille fixe. L’encodeur accumule les bits d’entrée dans un tampon et en prélève 13 à la fois. Si la valeur sur 13 bits est supérieure à 88, elle est écrite avec deux caractères. Si elle est inférieure ou égale à 88, un 14e bit est prélevé en plus, ce qui tient encore puisque deux caractères en base 91 peuvent exprimer 91 × 91 = 8281 valeurs différentes. Chaque groupe de 13 ou 14 bits devient donc exactement 2 caractères.

Il en résulte un surcoût d’environ 23 % au maximum, qui descend jusqu’à environ 14 % pour des données comportant de longues suites d’octets nuls. Les données aléatoires ou compressées se situent près de la limite haute.

basE91 face aux autres encodages

EncodageCaractèresTaille de la sortie
Hexadécimal162 × l’entrée
Base5858environ 1,37 × l’entrée
Base64641,33 × l’entrée
Base85 / Ascii85851,25 × l’entrée
basE9191environ 1,14 à 1,23 × l’entrée

Pour comparer les longueurs de sortie réelles avec vos propres données, saisissez-les dans Tous les encodages.

Points à retenir

  • Échappement. L’alphabet contient le guillemet double ", qui doit être échappé en JSON et dans la plupart des chaînes littérales, ainsi que <, > et &, qui doivent être échappés en HTML et en XML. basE91 n’est pas compatible URL.
  • Décodez la chaîne entière. Comme les bits chevauchent les limites entre caractères, un fragment extrait du milieu d’une chaîne basE91 ne peut pas être décodé seul.
  • Prise en charge. basE91 n’est pas une norme de l’IETF. L’auteur publie des implémentations de référence en C et dans d’autres langages, et des portages existent pour la plupart des plateformes, comme le paquet base91 pour Python.

Spécifications

Alphabet91 caractères ASCII imprimables
Taille de sortieEnviron 123 %
RemplissageAucun
NormebasE91 (Joachim Henke)
Sensible à la casseOui

Exemples

Entrée (UTF-8)Sortie
Hello, World!>OwJh>}AQ;r@@Y?F
Base64.isxD7gXm^?t#5
你好I_5k7aPE

Questions fréquentes

basE91 est-il plus compact que Base64 ?

Oui. Base64 ajoute toujours 33 %, alors que basE91 ajoute au maximum environ 23 %, et moins encore pour des données contenant beaucoup d’octets nuls. Pour un fichier de 1 Mo, cela représente environ 100 Ko d’économie.

Quels caractères basE91 utilise-t-il ?
Les lettres A-Z et a-z, les chiffres 0-9 et les symboles !#$%&()*+,./:;<=>?@[]^_`{|}~". L’espace, l’apostrophe, le trait d’union et la barre oblique inverse ne sont pas utilisés.
Pourquoi écrit-on basE91 ?

C’est l’orthographe choisie par son auteur. basE91 et Base91 désignent le même encodage, et cette page suit l’algorithme original.

Les espaces et sauts de ligne gênent-ils le décodage ?

Non. Les espaces et les sauts de ligne ne font pas partie de l’alphabet : le décodeur de cette page les ignore. Vous pouvez coller directement du texte basE91 réparti sur plusieurs lignes.