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
       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)