Provided by: manpages-pt-br_4.27.0-1_all bug

NOME

       UTF-8 - uma codificação Unicode multibyte compatível com ASCII

DESCRIÇÃO

       O  conjunto  de  caracteres  Unicode 3.0 ocupa um espaço de código de 16 bits. A codificação Unicode mais
       óbvia (conhecida como UCS-2) consiste de uma sequência de  palavras  de  16  bits.  Tais  palavras  podem
       conter,  como  parte de seus vários caracteres de 16 bits, bytes 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 adequada de Unicode em  nomes
       de   arquivos,  arquivos-texto,  variáveis  de  ambiente,  etc.  O  Universal  Character  Set  (UCS),  um
       superconjunto de Unicode da ISO/IEC 10646, ocupa um espaço de código ainda maior — 31 bits —  e  a  óbvia
       codificação UCS-4 para ele (uma sequê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 mais comum de usar o conjunto
       de caracteres Unicode sob sistemas operacionais do estilo Unix.

   Propriedades
       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  maiores que 0x7f são codificados como uma sequê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 0xc0, 0xc1, 0xfe e 0xff nunca são usados na codificação UTF-8.

       •  O primeiro byte de uma sequência multibyte que representa um único caractere UCS não-ASCII está sempre
          na  faixa  0xc2  a  0xfd,  e  indica  o tamanho desta sequência multibyte. Todos os bytes seguintes na
          sequência multibyte estão na faixa de 0x80 a 0xbf. Isto permite uma ressincronização fácil e  torna  a
          codificação independente de estado, e robusta contra perda de bytes.

       •  UTF-8  codificados  em UCS podem ter até seis bytes de comprimento, porém os caracteres Unicode padrão
          específica nenhum caractere acima de 0x10ffff, assim caracteres Unicode  somente  podem  ter  mais  de
          quatro bytes de comprimento em UTF-8.

   Codificação
       As  seguintes  sequências  de  bytes  são  usadas  para representar um caractere. A sequê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,  com  o primeiro bit mais significante primeiro (big-endian). Somente a sequência multibyte mais
       curta possível que pode representar o número do código do caractere pode ser usada.

       Os valores de código UCS 0xd800–0xdfff (substitutos UTF-16) assim como 0xfffe  e  0xffff  (não-caracteres
       UCS)  não  deveriam  aparecer  em  conformidade com o fluxo UTF-8. De acordo com o RFC 3629, nenhum ponto
       acima de U+10FFFF deve ser usado, o que limita os caracteres a quatro bytes.

   Exemplo
       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

   Notas para aplicação
       Usuários tem que selecionar uma localidade UTF-8, por exemplo, com

              export LANG=en_GB.UTF-8

       para ordenar a ativação do suporte UTF-8 nas aplicações.

       Aplicações que tem sido usuárias prevenidas de codificação de  caractere  sempre  deveriam  selecionar  a
       localização com, por exemplo,

              setlocale(LC_CTYPE, "")

       e programadores podem, então, testar a expressão

              strcmp(nl_langinfo(CODESET), "UTF-8") == 0

       para  determinar  se  uma  localidade  UTF-8  já foi selecionado e se todo texto plano da entrada e saída
       padrão, comunicação de terminal, conteúdo de texto plano, nomes de arquivos e variáveis de  ambiente  são
       codificadas em UTF-8.

       Programadores  acostumados  com  codificações  de  byte  único  como US-ASCII e ISO/IEC 8859 têm de estar
       cientes que duas suposições não são mais válidas na localização UTF-8. Primeiramente, um byte simples não
       corresponde necessariamente a um caractere único. Em segundo  lugar,  desde  os  emuladores  de  terminal
       modernos em UTF-8 também podem prover suporte a caracteres de tamanho duplo de chinês, japonês e coreano,
       bem  como  caracteres  de  combinação  sem  espaçamento,  emitindo um caractere único não necessariamente
       avançando o cursor por uma posição como é feito em ASCII. Bibliotecas  de  funções  como  mbsrtowcs(3)  e
       wcswidth(3) devem ser usadas nos dias atuais para contar caracteres e posições de cursor.

       A sequência oficial de ESC para alternar, oriunda do esquema de codificação ISO/IEC 2022 (como usada, por
       exemplo,  por  terminais VT100) para UTF-8 é ESC % G ("\x1b%G"). O sequência de retorno correspondente da
       UTF-8 para ISO/IEC 2022 é ESC % @ ("\x1b%@"). Outras sequências ISO/IEC 2022 (tais como  para  trocar  os
       conjuntos G0 e G1) não são aplicadas no modo UTF-8.

   Segurança
       Os padrões Unicode e UCS requerem que produtores de UTF-8 usem a menor forma possível, isto é, produzindo
       uma sequência de dois bytes sendo o primeiro 0xc0. Unicode 3.1 foi adicionada um requisição que programas
       não devem aceitar formas não-reduzidas em suas entradas. Por razões de segurança: se a entrada do usuário
       for  verificada, contra violações de segurança, um programa poderia verificar somente pelas versões ASCII
       de "/../" ou ";" ou NUL e negar  que  há  muitas  maneiras  non-ASCII  de  representar  isto  nas  formas
       não-reduzidas UTF-8.

   Padrões
       ISO/IEC 10646-1:2000, Unicode 3.1, RFC 3629, Plan 9.

VEJA TAMBÉM

       locale(1), nl_langinfo(3), setlocale(3), charsets(7), unicode(7)

TRADUÇÃO

       A  tradução  para  português  brasileiro  desta  página  man  foi  criada  por  Rubens  de Jesus Nogueira
       <darkseid99@usa.net>,    André    Luiz    Fassone    <lonely_wolf@ig.com.br>    e    Rafael    Fontenelle
       <rafaelff@gnome.org>.

       Esta  tradução  é  uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as
       condições de direitos autorais.  Nenhuma responsabilidade é aceita.

       Se você encontrar algum erro na tradução  desta  página  de  manual,  envie  um  e-mail  para  a lista de
       discussão de tradutores.

Linux man-pages 6.9.1                             15 junho 2024                                         UTF-8(7)