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)