Modes d’encodage

Aussi appelé: modes de données, mode numérique, mode alphanumérique, mode octet, mode kanji, encoding modes

Définition

Les modes d’encodage sont les manières dont un QR code range les caractères en bits. Les quatre modes principaux sont numérique, alphanumérique, octet et kanji, et un même code peut passer de l’un à l’autre.

Les quatre modes principaux

Chaque mode échange l’étendue des caractères contre la densité. Le mode numérique ne gère que les chiffres mais en range trois dans 10 bits, tandis que le mode octet gère n’importe quel octet mais dépense 8 bits pour chacun.

Le mode alphanumérique couvre un jeu de 45 caractères : les chiffres 0 à 9, les lettres majuscules A à Z, l’espace et les symboles $ % * + - . / et les deux-points. Les minuscules n’en font pas partie, c’est pourquoi une URL entièrement en majuscules peut donner un code plus petit que la même URL en minuscules.

  • Numérique : chiffres 0 à 9, 10 bits pour 3 chiffres
  • Alphanumérique : 45 caractères, 11 bits pour 2 caractères
  • Octet : toute valeur de 8 bits, 8 bits par octet
  • Kanji : caractères à deux octets Shift JIS, 13 bits chacun

Indicateurs de mode et segments

Chaque suite de données commence par un indicateur de mode de 4 bits et un nombre de caractères, dont la longueur dépend du mode et de la version. Un code peut contenir plusieurs segments de ce type, par exemple numérique pour une longue suite de chiffres et octet pour le reste, ce qui peut réduire le résultat.

D’autres indicateurs de 4 bits signalent des fonctions plutôt que des jeux de caractères : ECI pour déclarer un encodage de caractères, l’ajout structuré pour répartir les données sur plusieurs codes, et FNC1 pour GS1 et d’autres formats de données sectoriels. Un terminateur de quatre bits à zéro clôt les données.

  • Numérique 0001, alphanumérique 0010, octet 0100, kanji 1000
  • ECI 0111, ajout structuré 0011
  • FNC1 première position 0101, seconde position 1001
  • Terminateur 0000

Mode octet et jeux de caractères

L’interprétation par défaut du mode octet dans la norme est l’ISO-8859-1 (Latin-1), mais la plupart des générateurs écrivent aujourd’hui de l’UTF-8 afin que les lettres accentuées, les autres écritures et les emojis survivent. Les lecteurs détectent généralement l’UTF-8 en inspectant les octets.

Quand le jeu de caractères doit être sans ambiguïté, un en-tête ECI peut le déclarer explicitement. Sans lui, un lecteur peut parfois se tromper et afficher des caractères illisibles.

Questions fréquentes

Pourquoi mon QR code est-il plus grand avec des minuscules ?

Les minuscules ne font pas partie du jeu alphanumérique : le texte doit donc utiliser le mode octet à 8 bits par caractère au lieu de 5,5. Les majuscules, les chiffres et quelques symboles se tassent davantage.

Un QR code peut-il stocker des emojis ou du texte non latin ?

Oui, en mode octet avec de l’UTF-8, que la plupart des générateurs et des lecteurs de téléphone prennent en charge. Chacun de ces caractères occupe plusieurs octets, et la capacité diminue donc.

Un même QR code peut-il mêler données numériques et texte ?

Oui. Les données peuvent être découpées en segments, chacun avec son propre mode, et les bons encodeurs choisissent le découpage qui donne le plus petit code.

Sources et normes

Tous les termes