Provided by: manpages-pt_20040726-2_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 carac‐
        teres sem modificações maiores. Por essas razões, UCS-2 não é uma codi‐
        ficaçã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  opera‐
        cionais 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 compri‐
          mento. 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  carac‐
        tere. A seqüência a ser usada depende do número de código UCS do carac‐
        tere:
 
        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  carac‐
        tere pode ser usada.
 

EXEMPLOS

        O  caractere  Unicode 0xa9 = 1010 1001 (o sinal de copyright) é codifi‐
        cado 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>
        unicode(7)
        Rubens  de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fas‐
        sone Canova <lonelywolf@blv.com.br> (revisão)