O que é Unicode: guia completo, usos e codificações

Última atualização: 20 agosto, 2025
  • O Unicode atribui um ponto de código exclusivo a cada caractere e sincroniza seu repertório com a ISO/IEC 10646.
  • UTF-8, UTF-16 e UTF-32 codificam os mesmos caracteres e permitem conversão sem perdas.
  • Propriedades de normalização, Bidi e UCD garantem comparação, ordenação e renderização consistentes.
  • Adotar o Unicode (de preferência UTF-8 na web) evita a corrupção e facilita a internacionalização.

Ilustração genérica sobre Unicode

Unicode é a linguagem comum que os computadores usam para lidar com texto : ele atribui um número único a cada caractere e símbolo, de praticamente qualquer sistema de escrita, para que possa ser armazenado, processado e compartilhado perfeitamente entre plataformas e países.

Este padrão surgiu para superar as limitações dos antigos conjuntos de caracteres ( o conjunto ASCII , páginas de código, EBCDIC, etc.), que eram insuficientes ou incompatíveis entre si, e hoje está sincronizado com a ISO/IEC 10646, mantém algoritmos (como o bidirecional) e define propriedades e regras de normalização para que tudo funcione de forma consistente.

O que é Unicode e por que ele é tão importante?

O Unicode é um padrão de codificação de caracteres universal e em constante evolução que descreve cada caractere com um nome, um ponto de código e um conjunto de propriedades (escrita, categoria, direcionalidade, maiúsculas/minúsculas, etc.). O Comitê Técnico do Unicode (UTC), dentro do Consórcio Unicode, mantém-no sincronizado com o padrão ISO/IEC 10646.

Seu objetivo é a universalidade, a uniformidade e a singularidade : um amplo repertório que permite a troca inequívoca de textos multilíngues, com regras claras e reproduzíveis. Graças a isso, as tecnologias modernas (sistemas operacionais, navegadores, XML, Java, bancos de dados) podem misturar alfabetos latinos e árabes, ideogramas CJK, emojis e símbolos técnicos ou musicais em um mesmo documento.

Caracteres, glifos e pontos de código

Em Unicode, um caractere é uma unidade abstrata de informação, e um ponto de código é seu identificador numérico . Um glifo é a forma visual (o que você vê na tela), que depende da fonte . Um único caractere pode ter vários glifos e, às vezes, um glifo representa mais de um caractere.

A notação usual para um ponto de código é U+XXXX em hexadecimal . Exemplos ilustrativos do material analisado: a letra minúscula 'l' é U+006C, a letra minúscula pré-composta 'ü' é U+00FC, o 'é' é U+00E9 e o beta grego: a letra maiúscula é U+0392 e a minúscula U+03B2 (em alguns textos, 'β' é citado com U+0392, mas esse código corresponde à letra maiúscula 'Β').

O espaço de código Unicode possui 1.114.112 posições possíveis (até U+10FFFF) , organizadas para abranger e classificar todos os sistemas de escrita e símbolos, com dezenas de milhares de atribuições efetivas e em constante crescimento em cada versão.

Plantas, áreas e blocos

O Unicode divide seu espaço de caracteres em 17 planos de até 65.536 pontos de código cada . Essa organização facilita o agrupamento de scripts e símbolos relacionados e permite encontrar rapidamente o que você procura.

Os planos mais relevantes são: o Plano Multilíngue Básico (BMP, plano 0), que reúne quase todos os alfabetos modernos e muitos símbolos; o Plano Multilíngue Suplementar (SMP, plano 1), que armazena escritas históricas e símbolos técnicos (por exemplo, musicais e matemáticos); o Plano Ideográfico Suplementar (SIP, plano 2), que expande os ideogramas CJK; o plano 14 (SSP), que inclui rótulos especiais; e os planos 15 e 16, que são para uso privado.

Blocos e áreas : os mapas são subdivididos informalmente em áreas e formalmente em blocos contíguos. Os blocos são usados ​​para tabular e documentar caracteres, embora nem sempre correspondam a agrupamentos linguísticos significativos.

  Guia completo para comprar um computador a prestações em Espanha.

Ideogramas CJK e o projeto Unihan

Os ideogramas do Leste Asiático (Han) são unificados no Unicode, com variações estilísticas por região , mas todos se referem ao mesmo caractere abstrato. Sua gestão é feita pelo Grupo de Relatores Ideográficos (IRG), um grupo ISO/IEC JTC1/SC2/WG2 com representantes da China, Japão, Coreia, Vietnã, Hong Kong, Macau, Singapura, Estados Unidos e outros.

A base de dados Unihan reúne informações auxiliares (leituras, significados, equivalências) essenciais para lidar com esses ideogramas em diferentes idiomas e padrões históricos ou corporativos.

Principais blocos e extensões CJK :

  • Ideogramas unificados CJK (BMP, U+4E00–U+9FFF): 20.992 caracteres comumente usados.
  • Extensão A (BMP, U+3400–U+4DBF): 6.592 ideogramas menos frequentes.
  • Extensões B–H: em SMP/SIP/TIP, eles somam dezenas de milhares a mais (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: U+2B820–U+2CEAF, 5.762; F: U+2CEB0–U+2EBEF, 7.473; G: U+30000–U+3134F, 4.939;
  • Outros blocos CJK relacionados: Radicais Kangxi (U+2F00–U+2FDF), símbolos e pontuação CJK (U+3000–U+303F), compatibilidade e formatos de compatibilidade, suplemento de ideograma de compatibilidade, etc.

O Unicode prevê que a incorporação de ideogramas não terá um fim absoluto e contempla mecanismos como sequências de descrição ideográfica para representar símbolos não codificados, decompondo-os em componentes existentes (com ressalvas: sem decomposição canônica ou garantias em operações como busca ou ordenação).

Formas de codificação: UTF-8, UTF-16 e UTF-32

O Unicode define formas de transformação (UTF) que convertem pontos de código em unidades de armazenamento, permitindo que o software processe o texto de forma eficiente, de acordo com seu contexto.

UTF-8 é um formato de codificação orientado a bytes de comprimento variável, compatível com ASCII no intervalo de U+0000 a U+007F em um único byte. O padrão atual usa de 1 a 4 bytes por caractere; alguns textos mais antigos mencionam de 1 a 6, mas no Unicode moderno o valor é de 1 a 4. É o formato dominante na web.

UTF-16 usa unidades de 16 bits

(uma ou duas unidades de código por caractere) : a maioria dos caracteres BMP cabe em uma unidade; caracteres suplementares usam pares substitutos no intervalo U+D800–U+DFFF.

UTF-32 tem comprimento fixo: 4 bytes por caractere, simples, mas consome muito espaço; útil quando a indexação direta de caracteres é importante e a memória não é um problema.

Como os bits são distribuídos em UTF-8

O formato UTF-8 distribui os bits do ponto de código em sequências de 1 a 4 bytes com cabeçalhos reconhecíveis, o que evita ambiguidades e facilita a detecção dos limites dos caracteres.

Intervalo Unicode Padrão de bits Bytes
U+0000..U+007F 0xxxxxxx 1
U+0080..U+07FF 110aaaa 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10aaaa 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx 4

Uma das principais vantagens do UTF-8 é que ele evita problemas de ordem de bytes (endianness) e permite o processamento altamente eficiente de fluxos de texto, além de ser compatível com versões anteriores do ASCII.

Esquemas de codificação, endianness e BOM

Além dos formatos UTF, o Unicode descreve esquemas de serialização que resolvem como os bytes são transmitidos entre sistemas com diferentes endianness e como aspectos como a ordem dos bytes são sinalizados.

  • UTF-8: endianness não se aplica. Pode ser transportado Marca de ordem de bytes (BOM) como uma dica, embora não seja obrigatório ou recomendado por padrão.
  • UTF-16: Variantes BE/LE (big/little-endian) e BOM opcional (se ausente e não definido pelo protocolo, big-endian é assumido).
  • UTF-32: Variantes BE/LE com regras análogas; BOM permitida como marca de ordem.
  Exemplos de termodinâmica na vida cotidiana

Existem também variantes específicas como UTF-16BE/UTF-16LE e UTF-32BE/UTF-32LE (sem BOM por convenção), e outras codificações de compatibilidade históricas como UTF-7 ou UTF-EBCDIC, além de GB18030 (equivalente chinês ao UTF-8 com suporte para chinês simplificado e tradicional).

Normalização, composição e equivalências

Muitos caracteres podem ser representados como pré-compostos ou como sequências de base + sinais combinatórios . Exemplos clássicos do material revisado: o 'Ä' pré-composto é U+00C4, enquanto a forma decomposta é 'A' (U+0041) + diérese (U+0308). O 'ỗ' vietnamita pode ser representado como 'o' (U+006F) + acento circunflexo (U+0302) + til (U+0303).

O Unicode define formas padronizadas e dois tipos de equivalência : canônica (mesmo conteúdo essencial) e de compatibilidade (formas que podem parecer iguais, mas têm diferenças semânticas). A padronização garante uma comparação confiável de strings e reduz a duplicação.

Algoritmo bidirecional e caracteres especiais

Para escritas da direita para a esquerda, como o árabe ou o hebraico, o Unicode incorpora um algoritmo bidirecional padronizado e em constante evolução (Bidi) (por exemplo, revisões na versão 6.3), de modo que textos mistos com latim e árabe sejam representados na ordem visual correta.

Classes de pontos de código que devem ser conhecidas de acordo com o material recebido: caracteres gráficos (letras, sinais, símbolos), formatação (caracteres invisíveis que afetam o processamento: U+2028 quebra de linha, U+2029 quebra de parágrafo, U+00A0 espaço físico), códigos de controle herdados para compatibilidade (intervalos U+0000–U+001F, U+007F, U+0080–U+009F), uso privado, posições reservadas, substitutos (U+D800–U+DFFF para UTF-16) e não caracteres (U+FFFE, U+FFFF em cada plano).

Unicode, ISO/IEC 10646 e outros padrões (ASCII, ANSI, páginas de código)

O Unicode está sincronizado com a norma ISO/IEC 10646 (UCS) e mantém os mapeamentos para padrões anteriores (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643, etc.), além de reservar espaços para uso exclusivo dos fabricantes.

ASCII vs. Unicode : ASCII é um conjunto de caracteres de 7 bits com 128 caracteres , suficiente para o inglês básico, mas insuficiente para idiomas com diacríticos, ideogramas ou emojis . O Unicode abrange mais de 140.000 caracteres e continua a crescer, com codificação de 8/16/32 bits de acordo com o formato UTF-12.

ANSI e páginas de código : 'ANSI' geralmente se refere a páginas de código Windows de 8 bits limitadas e mutuamente incompatíveis. Um computador executando OEM-Latin II que abre um texto em IBM EBCDIC-Cyrillic verá caracteres incorretos. O Unicode supera esse problema com um conjunto único de caracteres e conversões sem perda entre seus próprios formatos.

Implementação em sistemas (Windows, Solaris) e conversão

O Windows usa internamente UTF-16 para suas APIs modernas e oferece recursos como MultiByteToWideChar e WideCharToMultiByte para conversão entre Unicode e páginas de código (SBCS/DBCS/MBCS). Se você for obrigado a converter para uma página de código, poderá haver perda de dados caso ela não consiga representar todos os caracteres.

Novos aplicativos no Windows devem usar UTF-16 internamente e deixar a conversão para as etapas finais (entrada/saída, protocolos), minimizando a corrupção. Mesmo assim, o Windows mantém a compatibilidade com páginas de código quando inevitável.

De acordo com a documentação revisada, o Oracle Solaris 11 oferece suporte a Unicode 6.0 e ISO/IEC 10646:2011 em nível de sistema, usando UTF-8 como formato padrão em seus conjuntos de parâmetros, o que evita problemas de ordenação de bytes e preserva o ASCII de forma transparente.

Unicode na prática: Web, documentos e programação

Na web, é comum servir e armazenar conteúdo em UTF-8 . Em HTML, declare '<meta charset="UTF-8">' para garantir a compatibilidade e use entidades numéricas hexadecimais quando necessário (exemplo: o euro '&#x20AC;').

  Guia completo de montagem de computador passo a passo

No Word, você pode inserir símbolos Unicode facilmente posicionando o cursor, acessando Inserir > Símbolo ou digitando o código e pressionando Alt+X; isso converte o valor em seu caractere, seguindo os procedimentos padrão. Veja também a lista de códigos Alt para inserir símbolos pelo teclado.

Em linguagens de programação : em Python 3, as strings já são Unicode; em Java e C#, você pode usar caracteres de escape '\uXXXX'; em HTML, '&#xXXXX;'. O importante é que a edição, a compilação e a transmissão usem a mesma codificação para evitar erros.

Copiar e colar símbolos funciona se toda a sequência estiver em Unicode . Se partes dela usarem uma codificação diferente, pontos de interrogação, quadrados ou outros símbolos estranhos podem aparecer.

Banco de dados de personagens (UCD), propriedades e categorias

O Banco de Dados de Caracteres Unicode (UCD) publica, para cada ponto de código, seu nome, categoria, script, propriedades de maiúsculas e minúsculas, direcionalidade e outras características . Essas informações são vitais para que os mecanismos de renderização e o processamento de texto funcionem corretamente.

Graças a essas propriedades , diferentes componentes e algoritmos (como classificação, segmentação de palavras ou transformação de maiúsculas/minúsculas) podem se comportar de maneira consistente com os mesmos dados.

Versões e extensões da norma: destaques

O Unicode evolui a cada versão , incorporando novos alfabetos, símbolos e emojis. Marcos importantes incluem a versão 1.0, em 1991, com 7.161 caracteres, e expansões subsequentes que adicionaram milhares de novos símbolos, ideogramas, emojis e alfabetos.

Por exemplo, em 2022 , a versão 15.0 adicionou 4.192 ideogramas CJK adicionais e outros elementos, atingindo aproximadamente 149.186 caracteres.

Ferramentas para explorar a tabela Unicode

Existem ferramentas gratuitas para pesquisar e analisar caracteres : Unibook Character Browser, SYMBL e Branah.com permitem consultar propriedades, nomes e blocos de caracteres, facilitando para desenvolvedores e criadores de conteúdo encontrarem rapidamente as informações de que precisam.

Casos de uso: formulários de endereço, internacionalização e negócios

Permitir que os usuários insiram endereços em seu próprio idioma e alfabeto ajuda a reduzir erros e a melhorar a experiência do usuário. Além disso, a interoperabilidade do Unicode evita problemas de conversão entre diferentes sistemas, mantendo a integridade do texto em toda a cadeia digital.

Por essa razão, o Unicode é o elemento fundamental que garante que o texto permaneça final em toda a infraestrutura digital , desde formulários da web a sistemas de banco de dados e documentos impressos, independentemente de você usar 'ñ', árabe, chinês ou emojis na mesma frase.

Numeração binária
Artigo relacionado:
Numeração binária: a linguagem secreta dos computadores