Relação entre Base64, Base62 e Tabela ASCII, UTF 8, 16, 32 | Conceito
- Relação entre Base64, Base62 e Tabela ASCII, UTF 8, 16, 32 | Conceito
Entendimento pessoal:
- Unicode é uma tabela de referência — uma lista de todos os símbolos e seus números (code points).
- Para armazenar esses dados em bytes temos o UTF 8, 16 e 32.
Situação Melhor escolha Motivo Web, arquivos texto, JSON, HTML UTF-8 Mais compacto e compatível com ASCII Aplicativos Windows / Java UTF-16 Usado nativamente por essas plataformas Processamento interno de strings fixas UTF-32 Acesso rápido por caractere (índice fixo) Olhar a documentação sobre UTF8, 16, 32 - O Unicode define quais caracteres existem; os UTFs definem como guardar esses caracteres em bytes.
- Base 62 e 64, pegam os bytes e transforma em ASCII seguros
- OBS: A tabela ASCII representa os bytes por letras, não quer dizer que ela representa as letras daqueles bytes
🧩 1. Entendendo o processo geral
O que acontece não é que o acento desaparece — ele vira bytes especiais em UTF-8, e o Base64 apenas transforma esses bytes em letras ASCII seguras.
O segredo está em entender as camadas:
[TEXTO COM ACENTOS]
↓ (UTF-8)
[BYTES BINÁRIOS]
↓ (Base64)
[TEXTO ASCII PURO]
🧠 2. Passo a passo com exemplo: “ação”
Vamos ver o que realmente acontece.
🔹 Texto original:
ação
🔹 Etapa 1 — Codificação UTF-8 (texto → bytes)
Cada caractere é transformado em uma sequência de bytes binários:
| Letra | Código Unicode | UTF-8 (hex) | Binário |
|---|---|---|---|
| a | U+0061 | 61 | 01100001 |
| ç | U+00E7 | C3 A7 | 11000011 10100111 |
| ã | U+00E3 | C3 A3 | 11000011 10100011 |
| o | U+006F | 6F | 01101111 |
🧩 Resultado em bytes:
61 C3 A7 C3 A3 6F
Observe: o “ç” e o “ã” ocupam 2 bytes cada, pois não estão no ASCII básico.
🔹 Etapa 2 — Codificação Base64 (bytes → ASCII)
Agora, pegamos esses bytes brutos e os transformamos em caracteres seguros do alfabeto Base64
(A–Z, a–z, 0–9, +, /).
📘 Base64 de 61 C3 A7 C3 A3 6F é:
YcOnw6Nv
Esses 8 caracteres (YcOnw6Nv) são todos ASCII válidos!
Nada de acentos aqui — mas eles representam os mesmos bytes.
🔹 Etapa 3 — Decodificação reversa
Quando alguém recebe YcOnw6Nv:
1️⃣ Decodifica Base64 → volta para os bytes 61 C3 A7 C3 A3 6F
2️⃣ Decodifica UTF-8 → volta para “ação”
✅ O texto original é recuperado sem perder acentos!
🔍 3. O ponto crucial
O Base64 não entende o que é acento — ele só enxerga bytes. Mas esses bytes já contêm a informação do acento, graças ao UTF-8.
💬 Em outras palavras:
O UTF-8 resolve “como guardar acentos”; o Base64 resolve “como transportar esses bytes com segurança”.
📦 4. Analogia simples
Pense assim:
- UTF-8 = “Como guardar as letras na caixa” (acento incluído).
- Base64 = “Como empacotar a caixa para enviar por correio”.
O Base64 não abre a caixa — ele só a transforma num formato de texto seguro (A-Z, a-z, 0-9, +, /).
Quando o destinatário recebe, ele abre a embalagem (Base64) e lê o conteúdo (UTF-8) exatamente como foi enviado.
⚖️ 5. Resumo técnico
| Etapa | Ferramenta | Função | Tipo de texto resultante |
|---|---|---|---|
| Texto original (“ação”) | — | Informação humana | “ação ” |
| UTF-8 | Codificação de caracteres | Transforma acentos em bytes | 61 C3 A7 C3 A3 6F |
| Base64 | Codificação de bytes | Transforma bytes em texto ASCII | YcOnw6Nv |
| Decodificação reversa | — | Recupera texto original | “ação” |
🧭 6. Conclusão
✅ Acentos não somem nem são convertidos diretamente em ASCII.
✅ Eles viram bytes especiais no UTF-8 (ex.: C3 A7 para “ç”).
✅ O Base64 só transforma esses bytes em caracteres ASCII seguros para transporte.
✅ Quando decodifica, os bytes voltam a ser texto com acento normalmente.
💡 Resumo em uma frase:
O acento é guardado nos bytes (via UTF-8), e o Base64 apenas escreve esses bytes com letras ASCII — sem perder nada.