unicode utf8 gbk encodings shift-jis web-dev

Guia para Iniciantes em Codificação de Caracteres e Unicode

Pare de ver texto corrompido. Entenda UTF-8, UTF-16, GBK e Shift-JIS, e aprenda como o Byte Order Mark (BOM) afeta seus arquivos.

2026-04-11

Codificações de Caracteres e Unicode: O Guia Definitivo para UTF-8, UTF-16 e mais

Nos primórdios da computação, representar texto era simples: cada carácter cabia em 7 ou 8 bits (ASCII). Mas, à medida que a computação se tornou global, precisámos de uma forma de representar cada carácter de cada língua do mundo. Esta é a história do Unicode e das codificações que o alimentam.

1. O Padrão Unicode

O Unicode não é uma codificação em si, mas um conjunto de caracteres universal. Atribui um número único, chamado ponto de código, a cada carácter (ex: U+0041 para 'A'). No entanto, ainda precisamos de uma forma de armazenar esses números em binário.

UTF-8 (O Rei da Web)

O UTF-8 é uma codificação de largura variável que utiliza de 1 a 4 bytes por carácter. É retrocompatível com ASCII.

  • Prós: Eficiente para línguas ocidentais, robusto contra corrupção de dados e o padrão universal para a web.

UTF-16

Utiliza 2 ou 4 bytes. É a codificação nativa do Windows (NTFS) e de muitos ambientes de programação como Java e JavaScript.

UTF-32

Utiliza exatamente 4 bytes para cada carácter. Embora simples para indexação, é muito ineficiente em termos de memória.


2. Codificações Legadas e Regionais

Antes do Unicode se tornar dominante, diferentes regiões utilizavam os seus próprios padrões, muitos dos quais ainda são encontrados hoje.

Codificações Chinesas (Família GB)

  • GB2312: O padrão inicial para o Chinês Simplificado.
  • GBK: Uma extensão do GB2312 para suportar mais caracteres.
  • GB18030: O padrão obrigatório atual na China, suportando Chinês Simplificado e Tradicional e mapeando totalmente para Unicode.

Codificações Japonesas

  • Shift-JIS: Historicamente a codificação mais popular para o Japonês, utilizada extensivamente no Windows e em websites antigos.

Coreano e Chinês Tradicional

  • EUC-KR: Uma codificação legada comum para o Coreano.
  • Big5: O padrão para caracteres de Chinês Tradicional utilizado principalmente em Taiwan e Hong Kong.

3. Codificações Legadas Ocidentais

ISO-8859-1 (Latin-1)

Uma codificação de 8 bits que cobre a maioria das línguas da Europa Ocidental.

Windows-1252

Uma ligeira variação da ISO-8859-1 utilizada por defeito em versões antigas do Windows.


4. Nuances Técnicas: BOM e Endianness

Marca de Ordem de Bytes (BOM)

A BOM é uma sequência especial de bytes no início de um ficheiro de texto (ex: EF BB BF para UTF-8). Indica ao software qual a codificação e a ordem de bytes que está a ser utilizada. Embora útil para UTF-16, é frequentemente desencorajada para UTF-8 em ambientes web.

Little Endian vs. Big Endian

Relevante para UTF-16 e UTF-32, refere-se à ordem em que os bytes são armazenados na memória.


Resumo Comparativo

Codificação Bytes por Carácter Compatibilidade Melhor Uso
UTF-8 1-4 ASCII Web, Linux, Mac
UTF-16 2 ou 4 Nenhuma Windows, Java, JS
GB18030 1, 2 ou 4 GBK Conformidade Governamental Chinesa
ASCII 1 Universal Sistemas Legados, apenas Inglês

Conclusão

O mundo estabeleceu-se largamente no UTF-8 como o padrão para troca de dados. No entanto, compreender codificações legadas como GBK ou Shift-JIS continua a ser vital ao lidar com sistemas legados ou software regional específico. Em caso de dúvida, utilize sempre UTF-8 sem BOM para aplicações modernas.