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.
Tudo roda no seu navegador — a sua entrada nunca é enviada, registrada ou armazenada.
O resultado aparece aqui 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 |   |
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
Cole
Escapes, pontos de código, entidades, bytes codificados ou texto puro. Não precisa dizer qual é.
- 2
Leia o resultado
O texto legível aparece na hora, junto com a indicação de quais representações foram reconhecidas.
- 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
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.
\ud83d\ude00
\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.
’ -> U+0092
’ -> 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.
\4E2Da
\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?
As barras invertidas sumiram e sobrou só u4e2d. Ainda dá para decodificar?
Por que um emoji vira dois escapes \u?
Como faço o caminho inverso, de texto para Unicode?
Duas strings parecem idênticas, mas o código diz que são diferentes. Por quê?
Tem algo invisível na minha string quebrando o código. Como eu acho?
Os meus dados são enviados para algum lugar?
Ferramentas relacionadas
Ver todas as ferramentas →Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Conversor de Base64 para Imagem
Codificação e Formatação
Decodifique uma string Base64 ou data URI de volta para imagem no navegador. Pré-visualize, leia dimensões e MIME, e baixe como PNG, JPG, GIF, SVG. Sem upload.
Conversor CSV para JSON
Codificação e Formatação
Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.
Conversor de .env para JSON
Codificação e Formatação
Cole um arquivo .env e obtenha JSON na hora. Suas senhas, chaves de API e tokens nunca saem do navegador — 100% privado, sem upload, analisador dotenv grátis.
Decodificador de Entidades HTML — Unescape HTML
Codificação e Formatação
Decodifique entidades HTML e faça unescape de HTML online — grátis, sem cadastro, 100% no seu navegador. Converte referências nomeadas, decimais & hex de volta em caracteres; nada é enviado.
Codificador de Entidades HTML — Escapar HTML
Codificação e Formatação
Codifique entidades HTML e escape caracteres especiais (< > & " ') online — grátis, sem cadastro, 100% no seu navegador. Saída nomeada, decimal ou hex; nada é enviado.