Convertisseur Punycode (noms de domaine internationalisés)

Convertit les noms de domaine internationalisés (IDN) contenant des caractères non ASCII, comme le japonais, vers et depuis le Punycode (un encodage compatible ASCII).

Astuces d'utilisation

  • Les noms de domaine composés de plusieurs étiquettes (parties séparées par `.`) sont eux aussi traités automatiquement étiquette par étiquette : celles qui ne contiennent que des caractères ASCII restent inchangées, et seules celles contenant des caractères non ASCII sont converties avec le préfixe `xn--`.
  • En mode « Punycode → Nom de domaine », seules les étiquettes comportant le préfixe `xn--` sont décodées ; les autres sont conservées telles quelles.
  • Cette même logique de conversion peut s'appliquer non seulement aux noms de domaine, mais aussi à la partie qui suit le `@` dans une adresse e-mail (la partie domaine).
  • Lorsque l'on saisit réellement un nom de domaine internationalisé dans la barre d'adresse du navigateur, la plupart des navigateurs le convertissent en interne en Punycode avant d'effectuer la résolution DNS.

Questions fréquentes

Le Punycode (RFC 3492) est un système d'encodage qui convertit les noms de domaine contenant des caractères Unicode — japonais, chinois, arabe, etc. —, appelés noms de domaine internationalisés (IDN), en chaînes composées uniquement des caractères ASCII que le DNS sait traiter. L'étiquette obtenue se voit attribuer le préfixe `xn--`.

Le DNS (Domain Name System) a été conçu à l'origine en partant du principe que seuls des caractères ASCII seraient utilisés ; les noms de domaine contenant des caractères japonais ou des emojis ne peuvent donc pas être résolus tels quels. Le Punycode convertit les noms de domaine contenant des caractères non ASCII en chaînes ASCII, ce qui permet les noms de domaine internationalisés sans modifier l'infrastructure DNS existante.

`xn--` est appelé « préfixe ACE » (ASCII Compatible Encoding), et il indique au DNS ainsi qu'aux logiciels compatibles que cette étiquette est un nom de domaine internationalisé encodé en Punycode. Lorsqu'un navigateur détecte ce préfixe, il le décode généralement pour afficher à l'utilisateur la chaîne Unicode d'origine.

Oui, il s'agit d'une technique de phishing connue sous le nom d'« attaque homographe IDN ». Des cas ont été signalés où un domaine Punycode (par exemple `xn--80ak6aa92e.com`) encodé à l'aide de caractères quasiment identiques visuellement — comme le « а » cyrillique face au « a » latin — a été utilisé pour usurper un domaine légitime. Les principaux navigateurs s'en prémunissent en affichant, dans la barre d'adresse, la forme Punycode brute (la chaîne commençant par `xn--`) plutôt que la version décodée lorsqu'ils détectent un mélange suspect de caractères.
ツールくん

Anecdote — les coulisses de la naissance des noms de domaine « chat » et « 日本語 »

Les discussions sur les noms de domaine internationalisés (IDN) ont débuté à la fin des années 1990, mais la normalisation a pris beaucoup de temps. Plusieurs approches ont été proposées pour gérer les caractères non ASCII sans modifier le cœur du DNS, et c'est finalement l'approche Punycode — encoder et décoder au niveau de la couche applicative (côté client), sans toucher au serveur DNS lui-même — qui a été retenue, normalisée sous le nom RFC 3492 en 2003.

Le nom « Punycode » viendrait d'une combinaison entre « Unicode » et « an amusing pun » (un jeu de mots amusant), et l'algorithme lui-même est une spécialisation, adaptée aux noms de domaine, d'une méthode d'encodage plus générale appelée Bootstring (une technique polyvalente conçue par des chercheurs d'IBM pour encoder un ensemble de caractères quelconque dans un ensemble restreint). Le fait que l'origine même du nom « Punycode » relève d'une plaisanterie en dit long sur l'humour propre à la communauté des développeurs.

Aujourd'hui, des noms de domaine utilisant des langues et symboles très variés — domaines japonais (`.jp`) ou même domaines en emojis (des exemples réels comme `💩.la` existent) — sont effectivement enregistrés et utilisés, mais ce processus de conversion Punycode a toujours lieu en coulisses. Même l'élégant domaine japonais affiché dans la barre d'adresse du navigateur est échangé avec le serveur DNS sous la forme d'une simple chaîne ASCII commençant par `xn--`.