Punycode (littéralement « code chétif ») est une syntaxe de codage définie dans laRFC 3492[1] et conçue pour être utilisée en adéquation avec lesnoms de domaine internationalisés dans les applications les prenant en charge.
LaRFC 3492 définit unalgorithme appelébootstring qui permet de représenter unechaîne de caractères tirée d'unjeu de caractères étendu au moyen d’une chaîne tirée d’un ensemble de base de caractères (un sous-ensemble souvent très réduit d’ASCII).Bootstring est par définition :
Punycode est une application particulière de l’algorithmebootstring, dédiée aunom de domaine internationalisé, où le jeu de base est très réduit (limité aux seules 26 lettres de l’alphabetlatin de base, sans distinction de casse, et aux 10 chiffres décimaux et au seul signe moins). Il permet toutefois de représenter n’importe quel texte Unicode, même siPunycode est généralement utilisé pour le codage des labels internationalisés dans les noms de domaines, où des restrictions supplémentaires (en plus de celle de la longueur) sont appliquées (notamment un filtrage des caractères autorisés, et une transformation de certains caractères ou certaines séquences dans une forme normalisée, avant leur représentation finale avecPunycode).
Punycode transforme une chaîne Unicode en une chaîne ASCII de manière unique et réversible. Les caractères ASCII dans la chaîne Unicode sont représentés littéralement, et les caractères non-ASCII sont représentés par des caractères ASCII, ces derniers étant tous autorisés dans les labels de nom d'hôte (lettres, chiffres et traits d'union).
Par exemple,bücher devientbcher-kva avecPunycode. De suite, lenom de domainebücher.ch
est représenté parxn--bcher-kva.ch
en IDNA (le standard permettant d'utiliser des caractères internationalisés dans les applications).
Dansxn--bcher-kva, lepunycode est la partiebcher-kva, à droite du préfixe indiquant un nom internationalxn--[3]. La chaine complète est le codage compatible ASCII (ASCII Compatible Encoding).
Jeux de caractères de base | ![]() | |
---|---|---|
Codification de fichiers et protocoles | ||
Adaptations de référence |
| |
Équivalences standards | ||
Propriétés et algorithmes |
| |
Transformations | ||
Standards et normes liés |
| |
Mises en œuvre et applications |