Pular para o conteúdo
Case Converter Online
pt

Codificação e decodificação UTF-8

Veja exatamente quais bytes o UTF-8 usa para qualquer texto, decodifique bytes de volta em caracteres e conserte textos com acentos quebrados, como ação. Cada caractere aparece com o seu code point.

Funciona nos dois sentidos. Escolha o formato dos bytes que corresponde ao que você cola à direita.

Caractere por caractere

CaractereCode pointBytes UTF-8Bytes

O que é UTF-8

Todo texto em um computador é guardado como números. O Unicode é a lista mestra que dá a cada caractere um número, chamado de code point. A letra A é U+0041, o é é U+00E9 e o símbolo do euro € é U+20AC. O UTF-8 é a regra que transforma esses code points em bytes.

O UTF-8 é a codificação padrão da web, do JSON, da maioria das linguagens de programação e dos sistemas operacionais modernos. A melhor característica dele é que o texto ASCII simples não muda: o A continua sendo o byte único 41. Os outros caracteres usam dois, três ou quatro bytes, e todos esses bytes valem 128 ou mais, então nunca são confundidos com ASCII.

Como usar a ferramenta UTF-8

Codificar. Digite na caixa Texto. Os bytes UTF-8 aparecem na caixa Bytes UTF-8. Clique em Copiar para pegá-los.

Decodificar. Cole os bytes na caixa Bytes UTF-8. Os caracteres aparecem à esquerda. Confira se o Formato dos bytes corresponde ao que você colou.

O Formato dos bytes oferece seis maneiras de escrever os bytes:

  • Bytes em hex: C3 A9 para ler e depurar
  • Escapes: \xC3\xA9 para strings literais em código
  • Percentual: %C3%A9 como nos endereços da web
  • Decimal: 195 169 para arrays de bytes
  • Binário: 11000011 10101001 para aprender como os bits são organizados
  • Texto embaralhado: é (corrigir mojibake) para consertar textos lidos com a codificação errada

Caractere por caractere. A tabela abaixo da ferramenta lista cada caractere com o code point, os bytes UTF-8 e a quantidade de bytes. O resumo mostra o total de caracteres e de bytes. Espaços, tabulações e quebras de linha aparecem com nome, para você conseguir vê-los.

Como o UTF-8 funciona

A quantidade de bytes depende do tamanho do code point:

Code points Bytes Padrão de bits
U+0000 a U+007F 1 0xxxxxxx
U+0080 a U+07FF 2 110xxxxx 10xxxxxx
U+0800 a U+FFFF 3 1110xxxx 10xxxxxx 10xxxxxx
U+10000 a U+10FFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

O primeiro byte diz quantos bytes vêm depois. Todos os bytes seguintes começam com 10. Isso torna o UTF-8 autossincronizável: um programa sempre consegue encontrar o começo do próximo caractere, mesmo no meio de um fluxo de dados.

Exemplos

Caractere Code point Hex UTF-8 Decimal
A U+0041 41 65
é U+00E9 C3 A9 195 169
ñ U+00F1 C3 B1 195 177
ß U+00DF C3 9F 195 159
€ U+20AC E2 82 AC 226 130 172
日 U+65E5 E6 97 A5 230 151 165
emoji de polegar para cima U+1F44D F0 9F 91 8D 240 159 145 141

As letras típicas do português ficam todas na faixa de dois bytes: ã é C3 A3, ç é C3 A7, õ é C3 B5 e ê é C3 AA.

Como consertar o mojibake

Mojibake é a confusão que aparece quando bytes UTF-8 são lidos como Windows-1252 ou Latin-1. Cada byte vira um caractere próprio, então as letras de dois bytes viram dois símbolos estranhos. No Brasil, isso é o famoso problema dos “acentos quebrados”, muito comum em e-mails, sistemas antigos e planilhas:

Texto correto Aparece como
café café
naïve naïve
It’s It’s
€ €
ação ação
Informações Informações

O formato Texto embaralhado desfaz isso. Ele transforma cada caractere embaralhado de volta no byte original e decodifica os bytes como UTF-8. Se o texto tiver caracteres que não poderiam ter vindo desse erro, a ferramenta avisa em vez de tentar adivinhar.

Dicas e limites

  • Salve os arquivos em UTF-8. A maior parte do mojibake começa com um arquivo salvo em uma codificação e aberto em outra. Nos editores, escolha UTF-8 ao salvar.
  • Declare a codificação. No HTML, coloque <meta charset="utf-8"> no topo da página.
  • Excel e arquivos CSV. As versões mais antigas do Excel tentam adivinhar a codificação de um CSV, e o resultado costuma ser acentos quebrados. Salvar como “CSV UTF-8” evita o problema.
  • O conserto funciona uma vez. Um texto que foi embaralhado duas vezes precisa do conserto aplicado duas vezes.
  • A tabela mostra até 500 caracteres para manter a página rápida. A contagem de bytes sempre cobre o texto inteiro.

Outras formas de fazer isso

Python. 'café'.encode('utf-8') devolve b'caf\xc3\xa9'. Para consertar o mojibake, 'café'.encode('cp1252').decode('utf-8') devolve café.

JavaScript. new TextEncoder().encode('é') devolve os bytes 195 e 169. new TextDecoder().decode(bytes) faz o caminho de volta.

Linha de comando. echo -n é | xxd mostra os bytes c3a9 em um terminal UTF-8. iconv -f WINDOWS-1252 -t UTF-8 converte arquivos inteiros.

Ferramentas relacionadas

Para decodificar bytes hex simples, use a ferramenta de hexadecimal para texto. Os bytes com codificação percentual em links são tratados pela ferramenta de codificar e decodificar URL. Para ver todos os bits, experimente o tradutor de código binário.

Codificador UTF-8: perguntas e respostas

Quantos bytes um caractere ocupa em UTF-8?

De um a quatro. Letras sem acento, dígitos e a pontuação básica ocupam um byte. A maioria das letras latinas acentuadas, como á, ã, ç e ê, além de grego, cirílico, hebraico e árabe, ocupa dois. A maioria dos caracteres chineses, japoneses e coreanos e símbolos como o do euro ocupa três. Os emojis normalmente ocupam quatro.

Como consertar textos como ação ou Informações?

Coloque o Formato dos bytes em Texto embaralhado: é (corrigir mojibake) e cole o texto quebrado na caixa da direita. O texto consertado aparece à esquerda: ação vira ação e Informações vira Informações.

Qual é a diferença entre Unicode e UTF-8?

O Unicode dá um número a cada caractere, chamado de code point, como U+20AC para o símbolo do euro. O UTF-8 é uma das formas de guardar esses números em bytes. O símbolo do euro é guardado como E2 82 AC em UTF-8.

Por que meu texto tem mais bytes do que caracteres?

Porque os caracteres fora do ASCII básico precisam de vários bytes cada. Café €5 mais um emoji de polegar para cima são 9 caracteres, mas 15 bytes. O resumo acima da tabela de caracteres mostra as duas contagens.

Mais ferramentas de código e dados

Ver todas as ferramentas