Provided by: manpages-pt_20040726-5_all bug

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)