UTF-8(7) | Manual do Programador Linux | UTF-8(7) |
UTF-8 - uma codificação Unicode multibyte compatível com ASCII
O conjunto de caracteres Unicode ocupa um espaço de código de 16 bits. A codificação Unicode mais óbvia (conhecida como UCS-2) consiste de uma seqüência de palavras de 16 bits. Tais strings podem conter, em sua maior parte, bytes de caracteres de 16 bits, como '\0' ou '/', que têm um significado especial em nomes de arquivos e outros parâmetros de funções em bibliotecas C. Além disso, a maioria das ferramentas UNIX esperam arquivos ASCII e não podem ler palavras de 16 bits como caracteres sem modificações maiores. Por essas razões, UCS-2 não é uma codificação externa disponível de Unicode em nomes de arquivos, arquivos-texto, variáveis de ambiente, etc. O ISO 10646 Universal Character Set (UCS), um superconjunto de Unicode, ocupa ainda um espaço de código de 31 bits e a óbvia codificação UCS-4 para ele (uma seqüência de palavras de 32 bits) tem o mesmo problema.
A codificação UTF-8 de Unicode e UCS não tem esses problemas e é a maneira de usar o conjunto de caracteres Unicode sob sistemas operacionais do estilo Unix.
A codificação UTF-8 tem as seguintes belas propriedades:
As seguintes seqüências de bytes são usadas para representar um caractere. A seqüência a ser usada depende do número de código UCS do caractere:
As posições de bit xxx são preenchidas com os bits do número do código de caractere na representação binária. Somente a seqüência de multibyte mais curta possível que pode representar o número do código do caractere pode ser usada.
O caractere Unicode 0xa9 = 1010 1001 (o sinal de copyright) é codificado em UTF-8 como
e o caractere 0x2260 = 0010 0010 0110 0000 (o símbolo de "diferente") é codificado como:
ISO 10646, Unicode 1.1, XPG4, Plan 9.
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fassone Canova <lonelywolf@blv.com.br> (revisão)
26/11/1995 | Linux |