Qual é o Punycode no Node.js?
Punycode é uma sintaxe de codificação especial usada especificamente para converter caracteres Unicode (UTF-8) em ASCII, que nada mais é do que o conjunto de caracteres de string restrito.
Por que esse tipo de conversão específica é necessária? Os nomes de host compreenderão apenas caracteres ASCII. Punycode é usado pelos Nomes de Domínio Internacionais (IDN) para codificar / decodificar a URL que foi digitada no navegador.
Por exemplo: Se você pesquisar mañana.com no navegador, seu navegador que possui um serviço IDNA embutido o converte para xn--maana-pta.com com a ajuda do conversor Punycode embutido no navegador.
Agora vamos ver como usar o Punycode com a ajuda do Node.js.
Punycode em Node.js: Punycode é empacotado com node.js v0.6.2 e as versões posteriores. Se quiser usar o Punycode, você precisa instalar o módulo Punycode usando a instalação npm.
instalação npm:
npm install punycode --save
Incluir módulo punycode:
const punycode = require('punycode');
punycode.decode (string): É usado para converter strings Punycode de ASCII em símbolos Unicode.
Exemplo:
// Include punycode module
const punycode = require('punycode');
// Decode Punycode strings of ASCII
// to Unicode symbols
console.log(punycode.decode('manama-pta'));
console.log(punycode.decode('--dqo34k'));
Saída:
punycode.encode (string): É usado para converter strings Unicode em strings Punycode de símbolos ASCII.
Exemplo:
// Include punycode module
const punycode = require('punycode');
// Encode Unicode symbols to
// Punycode ASCII string
console.log(punycode.encode('máanama'));
console.log(punycode.encode('?-?'));
Saída:
manama-pta --dqo34k
punycode.toUnicode (entrada): É usado para converter strings Punycode que representam um nome de domínio ou endereço de e-mail em símbolos Unicode. Não importa se você o chama em um Unicode já convertido.
Exemplo:
// Include punycode module
const punycode = require('punycode');
console.log(punycode.toUnicode('xn--maana-pta.com'));
console.log(punycode.toUnicode('xn----dqo34k.com'));
Saída:
punycode.toASCII (entrada): É usado para converter strings Unicode em minúsculas que representam um nome de domínio ou endereço de e-mail em símbolos Punycode. Não importa se você o chama com um domínio que já está em ASCII.
Exemplo:
// Include punycode module
const punycode = require('punycode');
console.log(punycode.toASCII('mañana.com'));
console.log(punycode.toASCII('?-?.com'));
Saída:
xn--maana-pta.com xn----dqo34k.com
punycode.ucs2.decode (string): Cria uma array de valores de ponto de código numérico para cada símbolo de código Unicode na string. Nos bastidores do navegador que foi construído internamente em Javascript, a função UCS-2 nele converterá um par de metades substitutas em um único ponto codificado .
Exemplo:
// Include punycode module
const punycode = require('punycode');
// Decoding strings
console.log(punycode.ucs2.decode('abc'));
console.log(punycode.ucs2.decode('\uD834\uDF06'));
Saída:
[ 97, 98, 99 ] [ 119558 ]
UCS-2: UCS-2 é um conjunto de caracteres universais de 2 bytes que produz um formato de comprimento fixo processando uma unidade de código de 16 bits. O ponto de código varia de 0 a 0xFFFF.
Pares substitutos: caracteres que estão fora do BMP, por exemplo, U + 1D306 TETRAGRAMA PARA CENTRO :, só podem ser codificados usando duas unidades de código de 16 bits. Isso é conhecido como “pares substitutos”. Os pares substitutos representam apenas um único personagem sozinho.
punycode.ucs2.encode (codePoints): É usado para criar uma string com base na array de valores de ponto de código numérico.
Exemplo:
// Include punycode module
const punycode = require('punycode');
console.log(punycode.ucs2.encode([0x61, 0x62, 0x63]));
console.log(punycode.ucs2.encode([0x1D306]));
Saída:
abc ?
Você pode ver o
Punycode Converter para ver o resultado ao vivo.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva