Provided by: manpages-pt_20040726-4_all 

NOME
UTF-8 - uma codificação Unicode multibyte compatível com ASCII
DESCRIÇÃO
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.
PROPIEDADES
A codificação UTF-8 tem as seguintes belas propriedades:
* caracteres UCS de 0x00000000 a 0x0000007f (os clássicos caracteres US-ASCII) são codificadas
simplesmente como bytes de 0x00 a 0x7f (compatibilidade com ASCII). Isto significa que os arquivos e
strings que contêm somente caracteres ASCII de 7 bits têm a mesma codificação tanto sob ASCII quanto
sob UTF-8.
* Todos os caracteres UCS > 0x7f são codificados como uma seqüência multibyte, consistindo somente de
bytes na faixa de 0x80 a 0xfd, de forma que nenhum byte ASCII apareça como parte de outro caractere e
não haja problemas com, por exemplo, '\0' ou '/'.
* A ordenação lexicográfica das strings UCS-4 é preservada.
* Todos os 2^31 códigos UCS possíveis podem ser codificados usando-se UTF-8.
* Os bytes 0xfe e 0xff nunca são usados na codificação UTF-8
* O primeiro byte de uma seqüência multibyte que representa um único caractere UCS não-ASCII está sempre
na faixa 0xc0 a 0xfd, e indica o tamanho desta seqüência multibyte. Todos os bytes seguintes na
seqüência multibyte estão na faixa de 0x80 a 0xbf. Isto permite um ressincronismo fácil e torna a
codificação independente de estado, e robusta contra perda de bytes.
* Caracteres
UTF-8 codificados em UCS podem ter até seis bytes de comprimento, porém os caracteres Unicode só podem
ter até três bytes de comprimento. Como o Linux usa somente o subconjunto Unicode de 16 bits do UCS,
sob Linux, as seqüências multibytes UTF-8 só podem ter um, dois ou três bytes de comprimento.
CODIFICAÇÃO
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:
0x00000000 - 0x0000007F:
0xxxxxxx
0x00000080 - 0x000007FF:
110xxxxx 10xxxxxx
0x00000800 - 0x0000FFFF:
1110xxxx 10xxxxxx 10xxxxxx
0x00010000 - 0x001FFFFF:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x00200000 - 0x03FFFFFF:
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 - 0x7FFFFFFF:
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
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.
EXEMPLOS
O caractere Unicode 0xa9 = 1010 1001 (o sinal de copyright) é codificado em UTF-8 como
11000010 10101001 = 0xc2 0xa9
e o caractere 0x2260 = 0010 0010 0110 0000 (o símbolo de "diferente") é codificado como:
11100010 10001001 10100000 = 0xe2 0x89 0xa0
PADRÕES
ISO 10646, Unicode 1.1, XPG4, Plan 9.
AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
VEJA TAMBÉM
unicode(7)
TRADUZIDO POR LDP-BR em 21/08/2000.
Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fassone Canova <lonelywolf@blv.com.br>
(revisão)
Linux 26/11/1995 UTF-8(7)