Conversor de punycode IDN

5 de 2 avaliações
Conversor de punycode IDN

O Conversor de punycode IDN é uma ferramenta gratuita que converte nomes de domínio internacionalizados em Punycode ASCII e também transforma Punycode de volta em texto Unicode legível.

O que é Punycode e por que ele existe?

O Punycode faz parte da conversão IDNA de U-labels Unicode para A-labels ASCII. Ele permite que nomes com letras como ü, é ou 漢 sejam processados por sistemas originalmente criados para aceitar apenas letras latinas básicas, números e hifens.

Um A-label IDNA começa com xn--. Esse prefixo informa aos aplicativos compatíveis com IDNA que os caracteres restantes representam um U-label em Punycode. Os pontos continuam separando os labels, portanto, cada parte do domínio é convertida de forma independente.

O Punycode é usado nos Nomes de Domínio Internacionalizados em Aplicações, geralmente abreviados como IDNA. O IDNA também cuida da validação e do tratamento dos caracteres, enquanto o Punycode fornece a representação ASCII de um label Unicode válido.

Punycode é uma codificação, não uma criptografia. Qualquer pessoa pode converter a forma ASCII de volta para Unicode. Por isso, ele não oferece sigilo e nunca deve ser usado para ocultar informações.

Diagrama: o texto passa pela ferramenta Conversor de punycode IDN nos dois sentidos

Como converter um nome de domínio internacionalizado?

Insira o texto Unicode em Converter para Punycode/ASCII ou informe A-labels ASCII em Converter para IDN/Texto. O resultado correspondente aparecerá em Punycode/ASCII ou IDN/Texto.

  1. Copie apenas o nome de domínio ou o label que deseja converter, sem aspas ao redor.
  2. Use Converter para Punycode/ASCII quando o texto Unicode tiver caracteres acentuados ou não latinos.
  3. Use Converter para IDN/Texto para A-labels ASCII.
  4. Confira cada label convertido antes de usá-lo no DNS, nas configurações de e-mail ou na configuração de um aplicativo.
A ferramenta Conversor de punycode IDN no digily.link, com o formulário de entrada

O conversor usa as funções PHP idn_to_ascii e idn_to_utf8. O processamento acontece no servidor. Os dados inseridos são enviados ao servidor por HTTPS e não são armazenados.

Exemplos práticos com domínios

Uma conversão simples mostra a relação entre o nome exibido e sua forma compatível com DNS.

Entrada münchen.de

Saída xn--mnchen-3ya.de

Ao converter o resultado no sentido inverso, você obtém münchen.de. O label de, composto apenas por caracteres ASCII, não precisa ser convertido. Já o label que contém ü se transforma em um label xn--.

A entrada precisa ser um texto válido de nome de domínio. O formato subjacente trata os casos mais comuns da seguinte maneira:

  • Letras acentuadas e não latinas: labels Unicode válidos são representados em ASCII por meio de IDNA e Punycode.
  • Pontos: cada ponto separa os labels. Assim, um domínio pode combinar labels ASCII comuns com labels codificados.
  • Números e hifens comuns: esses caracteres já fazem parte do ASCII e, em geral, continuam legíveis, desde que respeitem as regras de sintaxe dos nomes de domínio.
  • Espaços: espaços não são válidos dentro de labels comuns de host no DNS. Remova qualquer espaço inserido por engano em vez de esperar que o Punycode o preserve como parte do domínio.
  • Pontuação: o ponto final separa labels, mas caracteres pertencentes ao caminho, à porta ou à string de consulta de uma URL não fazem parte do nome do host.
  • Entrada vazia ou muito longa: um valor vazio não contém nenhum domínio para converter. O DNS também limita cada label codificado a 63 octetos. Por isso, um label Unicode visualmente curto pode ficar longo demais depois da conversão.
Exemplo de resultado gerado pela ferramenta Conversor de punycode IDN

Por que a conversão para Punycode falha ou gera um texto inesperado?

A conversão geralmente falha porque a entrada não é um texto IDN válido, contém um A-label malformado ou passou primeiro por outra codificação. Ao converter para IDN/Texto, uma entrada ASCII comum que não seja um A-label pode simplesmente permanecer inalterada. Antes de modificar os caracteres manualmente, confira se a origem contém U-labels Unicode, A-labels ASCII ou um nome de host codificado como URL.

  • A-labels malformados ou codificação incorreta: um label xn-- malformado pode impedir a conversão. Base64, texto hexadecimal e URLs com codificação percentual não são Punycode.
  • Caracteres não permitidos: o Punycode pode representar valores Unicode, mas as regras do IDNA e os registros de domínios podem rejeitar determinados caracteres, combinações ou sistemas de escrita.
  • Label longo demais: o DNS limita cada label codificado a 63 octetos. Portanto, um label Unicode pode ultrapassar o limite depois da conversão.
  • Entrada parcial: copiar junto com o nome do host colchetes, um número de porta ou parte de um atributo HTML pode tornar o valor inválido.
  • Entrada codificada duas vezes: se os caracteres de um domínio Punycode tiverem sido codificados explicitamente ou de forma não canônica com codificação percentual, eles poderão aparecer como sequências percentuais. Primeiro, remova essa camada de codificação com o Decodificador de URL. Depois, converta o domínio resultante.
  • Dados binários em vez de texto: a conversão IDN funciona com texto Unicode de nomes de domínio. Bytes arbitrários de um arquivo podem falhar na validação ou gerar caracteres sem sentido quando interpretados como texto.

Onde o Punycode é usado?

Você encontrará Punycode principalmente em nomes de domínio, registros DNS, processamento de endereços pelos navegadores e sistemas que armazenam nomes de host como ASCII. Dependendo das regras de segurança e dos caracteres envolvidos, o navegador pode exibir o nome internacionalizado legível ou manter a forma xn--.

Endereços de e-mail podem usar Punycode no domínio que aparece depois do sinal @. Ele não codifica o nome da caixa de correio antes do sinal @. Dados JSON e strings de consulta podem conter Punycode quando transportam um nome de host, mas as sintaxes de JSON e de strings de consulta não exigem Punycode para textos em geral.

URIs de dados normalmente usam codificação percentual ou Base64 no conteúdo. O Punycode só aparece nelas quando o texto contido inclui um nome de host internacionalizado. Da mesma forma, use o Codificador de URL para valores do caminho ou da consulta e Punycode para o próprio nome do host.

Perguntas frequentes

Posso colar uma URL completa em um conversor de IDN?

É mais seguro extrair o nome do host e converter apenas essa parte. O esquema, a porta, o caminho, o fragmento e a consulta seguem regras de sintaxe próprias. Os caracteres dessas seções podem precisar de codificação de URL em vez de Punycode.

Um domínio com um label xn-- significa que o site não é seguro?

Não. Muitos domínios internacionalizados legítimos usam labels xn--. No entanto, caracteres visualmente parecidos de diferentes sistemas de escrita podem ser usados em nomes enganosos. Antes de informar senhas ou dados de pagamento, confira a grafia decodificada e verifique se ela corresponde à organização esperada.

Posso usar emojis em um domínio Punycode?

Emojis não são permitidos em labels de domínio IDNA, embora o algoritmo Punycode consiga codificar seus pontos de código. As políticas dos registros de domínios também podem impor outras restrições aos sistemas de escrita e símbolos permitidos.

Por que meu navegador mostra Punycode em vez de Unicode?

Os navegadores podem manter a forma ASCII quando um label mistura sistemas de escrita, contém caracteres associados à falsificação de identidade ou não atende à política de exibição do navegador. Essa é uma medida de proteção visual, não uma prova de que a conversão esteja incorreta.

Um nome convertido vai funcionar no DNS com certeza?

Não. Uma conversão bem-sucedida não comprova que o domínio está registrado, disponível ou permitido pelo registro responsável. Antes de usar o resultado, verifique o tamanho do label, confira a grafia legível e confirme se o registro aceita os caracteres envolvidos.

Ferramentas populares