Skip to content

Punycode

Obsoleto desde: v7.0.0

[Estable: 0 - Obsoleto]

Estable: 0 Estable: 0 - Obsoleto

Código fuente: lib/punycode.js

La versión del módulo punycode incluida en Node.js está obsoleta. En una futura versión principal de Node.js, este módulo será eliminado. Los usuarios que actualmente dependen del módulo punycode deberían cambiar a usar el módulo Punycode.js proporcionado por el usuario. Para la codificación de URL basada en punycode, consulte url.domainToASCII o, más generalmente, la API de URL WHATWG.

El módulo punycode es una versión incluida del módulo Punycode.js. Se puede acceder a él utilizando:

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

Punycode es un esquema de codificación de caracteres definido por RFC 3492 que está destinado principalmente para su uso en nombres de dominio internacionalizados. Debido a que los nombres de host en las URL están limitados solo a caracteres ASCII, los nombres de dominio que contienen caracteres no ASCII deben convertirse a ASCII utilizando el esquema Punycode. Por ejemplo, el carácter japonés que se traduce a la palabra inglesa, 'example' es '例'. El nombre de dominio internacionalizado, '例.com' (equivalente a 'example.com') está representado por Punycode como la cadena ASCII 'xn--fsq.com'.

El módulo punycode proporciona una implementación sencilla del estándar Punycode.

El módulo punycode es una dependencia de terceros utilizada por Node.js y puesta a disposición de los desarrolladores como una conveniencia. Las correcciones u otras modificaciones al módulo deben dirigirse al proyecto Punycode.js.

punycode.decode(string)

Agregado en: v0.5.1

El método punycode.decode() convierte una cadena Punycode de caracteres solo ASCII a la cadena equivalente de puntos de código Unicode.

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

punycode.encode(string)

Agregado en: v0.5.1

El método punycode.encode() convierte una cadena de puntos de código Unicode a una cadena Punycode de caracteres solo ASCII.

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

punycode.toASCII(domain)

Agregado en: v0.6.1

El método punycode.toASCII() convierte una cadena Unicode que representa un Nombre de Dominio Internacionalizado a Punycode. Solo se convertirán las partes no ASCII del nombre de dominio. Llamar a punycode.toASCII() en una cadena que ya solo contiene caracteres ASCII no tendrá ningún efecto.

js
// codificar nombres de dominio
punycode.toASCII('mañana.com') // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com') // 'xn----dqo34k.com'
punycode.toASCII('example.com') // 'example.com'

punycode.toUnicode(domain)

Agregado en: v0.6.1

El método punycode.toUnicode() convierte una cadena que representa un nombre de dominio que contiene caracteres codificados con Punycode a Unicode. Solo se convertirán las partes del nombre de dominio codificadas con Punycode.

js
// decodificar nombres de dominio
punycode.toUnicode('xn--maana-pta.com') // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com') // '☃-⌘.com'
punycode.toUnicode('example.com') // 'example.com'

punycode.ucs2

Agregado en: v0.7.0

punycode.ucs2.decode(string)

Agregado en: v0.7.0

El método punycode.ucs2.decode() devuelve un array que contiene los valores numéricos del punto de código de cada símbolo Unicode en la cadena.

js
punycode.ucs2.decode('abc') // [0x61, 0x62, 0x63]
// par sustituto para el tetragrama U+1D306 para el centro:
punycode.ucs2.decode('\uD834\uDF06') // [0x1D306]

punycode.ucs2.encode(codePoints)

Agregado en: v0.7.0

El método punycode.ucs2.encode() devuelve una cadena basada en un array de valores numéricos de puntos de código.

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

punycode.version

Agregado en: v0.6.1

Devuelve una cadena que identifica el número de versión actual de Punycode.js.