Skip to content

Punycode

Depreciado desde: v7.0.0

[Estável: 0 - Depreciado]

Estável: 0 Estabilidade: 0 - Depreciado

Código-fonte: lib/punycode.js

A versão do módulo punycode incluído no Node.js está sendo depreciada. Em uma futura versão principal do Node.js, este módulo será removido. Os usuários que atualmente dependem do módulo punycode devem mudar para usar o módulo Punycode.js fornecido pelo userland. Para codificação de URL baseada em punycode, consulte url.domainToASCII ou, de forma mais geral, a API WHATWG URL.

O módulo punycode é uma versão empacotada do módulo Punycode.js. Ele pode ser acessado usando:

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

Punycode é um esquema de codificação de caracteres definido pela RFC 3492, que se destina principalmente ao uso em Nomes de Domínio Internacionalizados. Como os nomes de host nas URLs são limitados apenas a caracteres ASCII, os nomes de domínio que contêm caracteres não ASCII devem ser convertidos em ASCII usando o esquema Punycode. Por exemplo, o caractere japonês que se traduz na palavra inglesa, 'example' é '例'. O Nome de Domínio Internacionalizado, '例.com' (equivalente a 'example.com') é representado por Punycode como a string ASCII 'xn--fsq.com'.

O módulo punycode fornece uma implementação simples do padrão Punycode.

O módulo punycode é uma dependência de terceiros usada pelo Node.js e disponibilizada aos desenvolvedores como uma conveniência. Correções ou outras modificações no módulo devem ser direcionadas ao projeto Punycode.js.

punycode.decode(string)

Adicionado em: v0.5.1

O método punycode.decode() converte uma string Punycode de caracteres apenas ASCII para a string equivalente de pontos de código Unicode.

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

punycode.encode(string)

Adicionado em: v0.5.1

O método punycode.encode() converte uma string de pontos de código Unicode para uma string Punycode de caracteres apenas ASCII.

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

punycode.toASCII(domain)

Adicionado em: v0.6.1

O método punycode.toASCII() converte uma string Unicode que representa um Nome de Domínio Internacionalizado para Punycode. Apenas as partes não ASCII do nome de domínio serão convertidas. Chamar punycode.toASCII() em uma string que já contém apenas caracteres ASCII não terá efeito.

js
// codificar nomes de domínio
punycode.toASCII('mañana.com') // 'xn--maana-pta.com'
punycode.toASCII('☃-⌘.com') // 'xn----dqo34k.com'
punycode.toASCII('example.com') // 'example.com'

punycode.toUnicode(domain)

Adicionado em: v0.6.1

O método punycode.toUnicode() converte uma string que representa um nome de domínio contendo caracteres codificados em Punycode para Unicode. Apenas as partes codificadas em Punycode do nome de domínio serão convertidas.

js
// decodificar nomes de domínio
punycode.toUnicode('xn--maana-pta.com') // 'mañana.com'
punycode.toUnicode('xn----dqo34k.com') // '☃-⌘.com'
punycode.toUnicode('example.com') // 'example.com'

punycode.ucs2

Adicionado em: v0.7.0

punycode.ucs2.decode(string)

Adicionado em: v0.7.0

O método punycode.ucs2.decode() retorna um array contendo os valores numéricos do ponto de código de cada símbolo Unicode na string.

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

punycode.ucs2.encode(codePoints)

Adicionado em: v0.7.0

O método punycode.ucs2.encode() retorna uma string com base em um array de valores numéricos de pontos de código.

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

punycode.version

Adicionado em: v0.6.1

Retorna uma string que identifica o número da versão atual do Punycode.js.