Skip to content

Punycode

Obsolète depuis : v7.0.0

[Stable: 0 - Obsolète]

Stable: 0 Stability: 0 - Obsolète

Code source : lib/punycode.js

La version du module punycode intégrée à Node.js est obsolète. Dans une future version majeure de Node.js, ce module sera supprimé. Les utilisateurs qui dépendent actuellement du module punycode doivent passer à l'utilisation du module Punycode.js fourni par l'utilisateur à la place. Pour l'encodage d'URL basé sur punycode, consultez url.domainToASCII ou, plus généralement, l'API WHATWG URL.

Le module punycode est une version intégrée du module Punycode.js. Il est accessible à l'aide de :

js
const punycode = require('node:punycode');

Punycode est un schéma d'encodage de caractères défini par RFC 3492 qui est principalement destiné à être utilisé dans les noms de domaine internationalisés. Étant donné que les noms d'hôte dans les URL sont limités aux caractères ASCII uniquement, les noms de domaine qui contiennent des caractères non ASCII doivent être convertis en ASCII à l'aide du schéma Punycode. Par exemple, le caractère japonais qui se traduit par le mot anglais 'example' est '例'. Le nom de domaine internationalisé, '例.com' (équivalent à 'example.com') est représenté par Punycode comme la chaîne ASCII 'xn--fsq.com'.

Le module punycode fournit une implémentation simple de la norme Punycode.

Le module punycode est une dépendance tierce utilisée par Node.js et mise à la disposition des développeurs par commodité. Les correctifs ou autres modifications apportées au module doivent être dirigés vers le projet Punycode.js.

punycode.decode(string)

Ajouté dans : v0.5.1

La méthode punycode.decode() convertit une chaîne Punycode de caractères ASCII uniquement en la chaîne équivalente de points de code Unicode.

js
punycode.decode('maana-pta'); // 'mañana'
punycode.decode('--dqo34k'); // '☃-⌘'

punycode.encode(string)

Ajouté dans : v0.5.1

La méthode punycode.encode() convertit une chaîne de points de code Unicode en une chaîne Punycode de caractères ASCII uniquement.

js
punycode.encode('mañana'); // 'maana-pta'
punycode.encode('☃-⌘'); // '--dqo34k'

punycode.toASCII(domain)

Ajouté dans : v0.6.1

La méthode punycode.toASCII() convertit une chaîne Unicode représentant un nom de domaine internationalisé en Punycode. Seules les parties non ASCII du nom de domaine seront converties. L'appel de punycode.toASCII() sur une chaîne qui ne contient déjà que des caractères ASCII n'aura aucun effet.

js
// encode domain names
punycode.toASCII('mañana.com');  // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com');   // 'xn----dqo34k.com'
punycode.toASCII('example.com'); // 'example.com'

punycode.toUnicode(domain)

Ajouté dans : v0.6.1

La méthode punycode.toUnicode() convertit une chaîne représentant un nom de domaine contenant des caractères encodés en Punycode en Unicode. Seules les parties encodées en Punycode du nom de domaine sont converties.

js
// decode domain names
punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com');  // '☃-⌘.com'
punycode.toUnicode('example.com');       // 'example.com'

punycode.ucs2

Ajouté dans : v0.7.0

punycode.ucs2.decode(string)

Ajouté dans : v0.7.0

La méthode punycode.ucs2.decode() renvoie un tableau contenant les valeurs numériques des points de code de chaque symbole Unicode dans la chaîne.

js
punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]
// surrogate pair for U+1D306 tetragram for centre:
punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306]

punycode.ucs2.encode(codePoints)

Ajouté dans : v0.7.0

La méthode punycode.ucs2.encode() renvoie une chaîne basée sur un tableau de valeurs numériques de points de code.

js
punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'
punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06'

punycode.version

Ajouté dans : v0.6.1

Renvoie une chaîne identifiant le numéro de version actuel de Punycode.js.