Punycode

Punycode (littéralement « code chétif ») est une syntaxe de codage définie dans la RFC 3492[1] et conçue pour être utilisée en adéquation avec les noms de domaine internationalisés dans les applications les prenant en charge.

L'algorithme de la RFC 3492 : bootstring

La RFC 3492 définit un algorithme appelé bootstring qui permet de représenter une chaîne de caractères tirée d'un jeu 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 :

  • complet : chaque chaîne étendue peut être représentée par une chaîne de base ;
  • unique : il y a au plus une chaîne de base qui représente une chaîne étendue donnée ;
  • réversible : toute chaîne étendue transformée peut être retrouvée à partir de sa forme de base ;
  • efficace : le rapport de longueur entre la chaîne étendue et la chaîne de base est petit (ceci est important en raison de la limitation du nombre de caractères dans les noms de domaine, 63, définie dans la RFC 1034[2]) ;
  • simple : l’algorithme de codage et de décodage est simple à mettre en œuvre. Les buts de simplicité et d'efficacité se contredisent ; bootstring concilie les deux ;
  • lisible : les chaînes de base doivent apparaître sous la même forme dans la chaîne étendue et dans la chaîne de base (cela pour des raisons d'efficacité également).

Punycode est une application particulière de l’algorithme bootstring, dédiée au nom de domaine internationalisé, où le jeu de base est très réduit (limité aux seules 26 lettres de l’alphabet latin 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 si Punycode 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 avec Punycode).

D'Unicode à ASCII

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 devient bcher-kva avec Punycode. De suite, le nom de domaine bücher.ch est représenté par xn--bcher-kva.ch en IDNA (le standard permettant d'utiliser des caractères internationalisés dans les applications).

Dans xn--bcher-kva, le punycode est la partie bcher-kva, à droite du préfixe indiquant un nom international xn--[3]. La chaine complète est le codage compatible ASCII (ASCII Compatible Encoding).

Mises en œuvre logicielles

Voir aussi

Notes et références

Bibliographie

Liens externes

Articles connexes

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.