Skip to content

Conversor Unicode

Cole qualquer forma Unicode e leia o texto de volta. Escapes \uXXXX, chaves ES6, pontos de código U+ e sequências de bytes são reconhecidos sozinhos, e todas as outras representações saem de uma vez. Roda no navegador.

Sem rastreamento Roda no navegador Grátis

Tudo roda no seu navegador — a sua entrada nunca é enviada, registrada ou armazenada.

0 caracteres
Texto legível
O resultado aparece aqui
Normalizar
Todas as representações de uma vez
JavaScript / Java / JSON uXXXX
ES6 u{XXXXX}
Python uXXXX / UXXXXXXXX
Go uXXXX / UXXXXXXXX
Rust u{XXXXX}
Ponto de código U+XXXX
HTML decimal &#NNNNN;
HTML hexadecimal &#xXXXX;
Codificado para URL %XX
CSS XXXXXX
Bytes UTF-8 hex
Unidades UTF-16 hex
UTF-32 hex
Bytes em octal NNN
Pontos de código decimais NNNNN
Caractere por caractere
Caractere Ponto de código UTF-8 UTF-16 Escrita Categoria Nome
O resultado aparece aqui

Referência rápida

Caractere Ponto de código JavaScript / Java / JSON Bytes UTF-8 Codificado para URL HTML decimal
中文 U+4E2D U+6587 \u4E2D\u6587 E4 B8 AD E6 96 87 %E4%B8%AD%E6%96%87 中文
😀 U+1F600 \uD83D\uDE00 F0 9F 98 80 %F0%9F%98%80 😀
A U+0041 A 41 A A
U+3000 U+3000 \u3000 E3 80 80 %E3%80%80  
Cada conversão da tabela de referência foi checada entre duas implementações independentes antes da publicação. — Equipe de Engenharia da Go-Tools · Aug 27, 2026

Comportamento verificado no Node, Python, Java, Go e em um motor de navegador real, em vez de deduzido da documentação.

O que é um escape Unicode?

Um escape Unicode escreve um caractere usando só ASCII, para que ele sobreviva a sistemas incapazes de carregar o caractere em si. O mesmo caractere tem um escape diferente em quase toda linguagem: JavaScript e JSON usam quatro dígitos hexadecimais por unidade de código UTF-16, ES6 e Rust aceitam o ponto de código inteiro entre chaves, Python e Go acrescentam uma forma larga de oito dígitos, o CSS usa só a barra invertida e o HTML tem as próprias referências numéricas e nomeadas. Todas descrevem o mesmo ponto de código, e é por isso que a mesma string chega até você em meia dúzia de formatos.

中文
  U+4E2D U+6587         code point
  \u4E2D\u6587          JavaScript / Java / JSON
  \u{4E2D}\u{6587}      ES6 / Rust
  E4 B8 AD E6 96 87     UTF-8
  %E4%B8%AD%E6%96%87    URL
  中文      HTML

O que este conversor faz

Reconhece o formato por você

Escapes, chaves, escapes largos, pontos de código, entidades, codificação percentual e sequências de bytes são detectados sem troca de modo.

Aguenta entrada misturada

Só as partes codificadas mudam. Pontuação de JSON, caminhos do Windows e barras invertidas já escapadas ficam como estão.

Todas as representações de uma vez

Uma colada produz a tabela inteira, então você nunca converte duas vezes para ir de uma linguagem a outra.

Certo para cada linguagem

Caracteres fora do BMP saem como escape largo para Python e Go, onde um par substituto falharia.

Inspeção caractere a caractere

Ponto de código, bytes UTF-8 e UTF-16, escrita e categoria de cada caractere, mais o nome Unicode sempre que houver um.

Revela caracteres invisíveis

Marcas de ordem de bytes, uniões de largura zero e espaços não separáveis ganham um marcador visível.

Exemplos

Cole a linha de log inteira, só os escapes mudam

{"msg":"\u4e2d\u6587 failed","code":500}
{"msg":"中文 failed","code":500}

Aspas, chaves e números ficam exatamente como estavam, então dá para colar a linha inteira em vez de garimpar os escapes na mão.

Quatro representações em uma colada só

U+4E2D  \u{1F600}  中  \ud83d\ude00
中  😀  中  😀

Um ponto de código, um escape ES6 entre chaves, uma entidade HTML e um par substituto, todos decodificados na mesma passada. Nada precisou ser selecionado nem configurado antes.

Um caractere, cada linguagem do seu jeito

\u4E2D        JavaScript / Java / JSON
\u{4E2D}      ES6 / Rust
U+4E2D        code point
E4 B8 AD      UTF-8
\344\270\255  octal

O mesmo caractere escrito como cada linguagem espera. Repare que Python e Go exigem a forma larga para caracteres fora do BMP: um par substituto não compila em Go e levanta UnicodeEncodeError em Python.

Como usar

  1. 1

    Cole

    Escapes, pontos de código, entidades, bytes codificados ou texto puro. Não precisa dizer qual é.

  2. 2

    Leia o resultado

    O texto legível aparece na hora, junto com a indicação de quais representações foram reconhecidas.

  3. 3

    Copie a forma que você precisa

    Todas as representações ficam listadas abaixo do resultado, cada uma com seu próprio botão de copiar.

  4. 4

    Investigue se algo parecer errado

    Abra a tabela de caracteres para ver pontos de código, bytes, escrita e nomes, e ligue Mostrar caracteres invisíveis para expor o que está escondido.

Erros que vale a pena conhecer

Escrever um par substituto onde a linguagem quer um escape largo

Um par que funciona em JSON vira dois pedaços quebrados em Python e se recusa a compilar em Go. Use a forma larga para caracteres acima de U+FFFF.

✗ Incorreto
\ud83d\ude00
✓ Correto
\U0001F600

Decodificar referências numéricas de HTML como pontos de código puros

Referências entre 128 e 159 precisam ser lidas por windows-1252. Uma implementação ingênua transforma uma aspa simples direita em um caractere de controle invisível, e é por isso que, em uma exportação antiga, esses pontos não mostram nada.

✗ Incorreto
’  ->  U+0092
✓ Correto
’  ->  U+2019

Usar um escape CSS curto antes de um caractere hexadecimal

O analisador continua engolindo dígitos hexadecimais, então o escape e o caractere seguinte se fundem em um único ponto de código errado. Preencha até seis dígitos.

✗ Incorreto
\4E2Da
✓ Correto
\004E2Da

Quando você precisa disso

Ler logs
Logs de servidor e respostas de API costumam chegar com o não-ASCII escapado. Cole a linha e leia sem editar antes.
Levar strings de uma linguagem para outra
Copie o escape exatamente na forma que a linguagem de destino aceita, em vez de converter na mão entre par substituto e escape largo.
Caçar um bug de codificação
Quando uma comparação falha ou o banco recusa um valor, a tabela de caracteres mostra quais pontos de código e bytes estão envolvidos.
Limpar conteúdo colado
Texto copiado de página web ou de documento costuma carregar caracteres invisíveis. Ache antes que cheguem à produção.

Detalhes técnicos

Unidades UTF-16, não caracteres
JavaScript, Java e JSON escapam unidades de código UTF-16, então um caractere acima de U+FFFF precisa de dois escapes. Python e Go oferecem uma forma de oito dígitos que recebe o ponto de código direto.
Referências numéricas de HTML são remapeadas
A especificação do HTML exige que referências numéricas na faixa de 128 a 159 sejam lidas por windows-1252 em vez de como pontos de código, então uma referência como 146 é uma aspa simples direita, não um caractere de controle invisível.
Escapes CSS precisam de preenchimento
Um escape CSS consome até seis dígitos hexadecimais, então um escape curto seguido de um caractere hexadecimal se funde em um único ponto de código errado. Preencher até seis dígitos elimina a ambiguidade, e um espaço logo depois é consumido como terminador.
Substituto sem par se comporta diferente em cada lugar
Um substituto sem par é preservado pela serialização JSON, silenciosamente trocado pelo TextEncoder, recusado pela codificação percentual, escrito como ponto de interrogação pelo Java e transformado em erro pelo Python.

Boas práticas

Normalize antes de comparar
Reduza os dois lados à mesma forma de normalização antes de comparar ou remover duplicatas, principalmente em nomes e identificadores.
Prefira a forma larga em Python e Go
Um par substituto é válido em JSON, mas quebra nas duas linguagens. Use o escape de oito dígitos quando o destino for código Python ou Go.
Cheque caracteres invisíveis cedo
Valide o que foi colado já na fronteira de entrada, em vez de depurar uma comparação que não bate lá na frente.
Guarde o valor original
Decodificar nem sempre é reversível sem perda depois que caracteres de substituição aparecem. Mantenha o valor bruto até ter certeza.

Perguntas frequentes

O que significa \u4e2d\u6587 e como eu leio isso?
Cada \uXXXX é uma unidade de código UTF-16 escrita em hexadecimal. \u4e2d é U+4E2D e \u6587 é U+6587; juntos formam 中文, a palavra chinesa para chinês. Cole a string inteira no campo acima e o texto legível volta, com o JSON ou o log em volta preservado intacto.
As barras invertidas sumiram e sobrou só u4e2d. Ainda dá para decodificar?
Dá. Terminais e pipelines de log engolem barra invertida com frequência. A forma crua u4e2du6587 é reconhecida e decodificada, enquanto palavras comuns que por acaso contêm um u ficam intactas.
Por que um emoji vira dois escapes \u?
Caracteres acima de U+FFFF não cabem em uma única unidade de código UTF-16, então JavaScript, Java e JSON os escrevem como um par substituto. Um rosto sorridente é 1 ponto de código, 2 unidades UTF-16 e 4 bytes UTF-8. A tabela de caracteres mostra as três contagens.
Como faço o caminho inverso, de texto para Unicode?
Digite ou cole texto normal e olhe a tabela abaixo do resultado. Todas as representações saem de uma vez, então você copia exatamente a forma que a sua linguagem espera, sem precisar converter duas vezes.
Duas strings parecem idênticas, mas o código diz que são diferentes. Por quê?
Provavelmente estão normalizadas de formas diferentes. Uma letra acentuada pode ser um único ponto de código ou uma letra base mais uma marca combinante: as duas renderizam igual, mas não são iguais. Use o botão NFC para juntar as duas na mesma forma. E normalização não é operação nula nem para CJK: ideogramas de compatibilidade mudam sob NFC comum.
Tem algo invisível na minha string quebrando o código. Como eu acho?
Ligue a opção Mostrar caracteres invisíveis. Marcas de ordem de bytes, espaços de largura zero, espaços não separáveis e seletores de variação ganham um marcador visível, e a tabela de caracteres dá o nome e os bytes de cada um.
Os meus dados são enviados para algum lugar?
Não. A conversão acontece no seu navegador, sem nenhuma requisição de rede. Nada é enviado, registrado ou armazenado, então colar log de produção é seguro.

Ferramentas relacionadas

Ver todas as ferramentas →