Codificação

Punycode encode/decode

Codificação de nomes de domínio com caracteres Unicode (IDN) para o formato ASCII compatível Punycode (xn--) e vice-versa.

The DNS system historically only supports ASCII characters, so domain names with Cyrillic, CJK, or other non-ASCII characters (IDN) are encoded as Punycode — an ASCII-compatible form prefixed with xn--. This tool encodes and decodes such domains.

How to use it

Common uses

Things to keep in mind

Visually similar characters from different scripts (like Cyrillic "а" and Latin "a") can form a domain that looks identical to a known brand — this is the basis of homograph phishing.

Not every browser shows decoded Unicode the same way: when a domain label mixes scripts, browsers often deliberately show the raw xn-- form as a warning sign.

Artigo sobre esta ferramenta: Punycode: como os domínios internacionalizados funcionam no DNS

Perguntas frequentes

Para que serve o Punycode?

O Punycode codifica nomes de domínio internacionalizados com caracteres não-ASCII (como münchen.de) em uma forma compatível com ASCII, prefixada com xn--, já que o sistema DNS só suporta rótulos ASCII.

Por que devo ter cuidado com domínios Punycode?

O Punycode permite ataques de homógrafos, em que caracteres parecidos de outros alfabetos são usados para registrar domínios idênticos visualmente a um confiável. Se um domínio mostrar o prefixo xn--, decodifique-o aqui para ver o que ele realmente significa.

Isso funciona só com nomes de domínio completos?

Você pode codificar ou decodificar um único rótulo ou um domínio completo com pontos — cada rótulo entre pontos é convertido de forma independente, e o prefixo xn-- só é adicionado aos rótulos que realmente contêm caracteres não-ASCII.

Como reconhecer que um link usa Punycode?

Um domínio codificado sempre tem o prefixo xn-- antes de cada rótulo que contém caracteres não-ASCII. Se você vir um domínio começando com xn-- na barra de endereço ou num e-mail, é sinal de IDN — vale a pena verificar qual texto está por trás da codificação.

Todos os navegadores exibem caracteres cirílicos na barra de endereço da mesma forma?

Não. Alguns navegadores só mostram o Unicode decodificado se todos os caracteres do domínio pertencerem ao mesmo alfabeto, e ao detectar mistura de alfabetos (sinal de ataque de homógrafos) exibem deliberadamente o registro xn-- bruto em vez dos caracteres originais.

Artigos: Codificação

Base64: para que serve a codificação e como funciona

Como o Base64 transforma dados binários em texto ASCII e quando isso é realmente necessário.

Base32: em que difere do Base64 e quando é mais prático

O alfabeto do Base32, que não diferencia maiúsculas de minúsculas, e os casos em que é mais prático que o Base64.

URL Encode/Decode: o percent-encoding em links

Como caracteres especiais em endereços e parâmetros se tornam sequências %XX.

HTML Entities: como exibir caracteres especiais com segurança

Por que os caracteres < > & precisam ser escapados e como isso evita que a marcação quebre.

JWT: a estrutura do token e o que significa "decodificar" um JWT

O header, o payload e a signature de um JWT, e por que decodificar não é o mesmo que verificar a assinatura.

Unicode Escape: o que significam as sequências \uXXXX

De onde vêm sequências como \u0041 em JSON e strings JS, e o que significam.

ROT13 e a cifra de César: substituição simples de caracteres

Por que um deslocamento de 13 letras torna o ROT13 autoinverso, e por que ainda se usa hoje.

Código Morse: como o texto se transforma em pontos e traços

O princípio de codificar letras em pontos e traços, e onde o Morse ainda é usado hoje.

Data URI: quando incorporar imagens diretamente no código

Como um Data URI incorpora o conteúdo de um arquivo diretamente em HTML ou CSS, e quando vale a pena.

Gzip + Base64: comprimir dados para transmitir como texto

Por que dados binários comprimidos também são codificados em Base64 antes de irem para um campo de texto.

XML Entities: escapar caracteres em documentos XML

As cinco entidades XML obrigatórias sem as quais o documento quebra ao ser analisado.