NOME
unicode - conjunto de caracteres universal
DESCRIÇÃO
O padrão internacional ISO 10646 define o Universal Character Set (UCS). UCS contém todos os caracteres de todos os outros padrões. Ele também garante a compatibilidade retroativa, isto é, as tabelas de conversão podem ser construídas de forma que nenhuma informação seja perdida quando uma string é convertida de qualquer outra codificação para UCS e vice-versa.
UCS contém os caracteres necessários para representar quase todas as línguas conhecidas. Isto inclui não somente a latina, grega, cirílica, hebraica, árabe, armênia e gregoriana, mas também chinesa, japonesa e coreana, como também as escritas em ideogramas hiragana, katakana, hangul, devangari, bengali, gurmukhi, gujarati, oriya, tamil, telugu, kannada, malaio, thai, lao, khmer, bopomofo, tibetana, rúnica, etíope, silábica canadense, cherokee, mongol, oghan, myanmar, sinhalam thaana, yi e muitas outras. Para escritas ainda não cobertas, pesquisas de como se fazer a codificação para o computador ainda são realizadas e elas serão eventualmente adicionadas. Isto não inclui somente símbolos gráficos e várias linguagens históricas indo-europeias mas, também, escritas artísticas como o tengwar, cirth e klingon. A UCS também incluí um grande número de símbolos gráficos, tipográficos, matemáticos e científicos, como aqueles fornecidos pelo Tex, PostScript, APL, MS-DOS, MS-Windows, Macintosh, fontes OCR e muitos sistemas de processamento de texto e de publicação, e mais será adicionado.
O padrão UCS (ISO 10646) descreve uma arquitetura de conjunto de caracteres de 31 bits, consistindo de 128 grupos de 24 bits divididos em 256 planos de 16 bits que formam 256 linhas com 8 bits com 256 colunas, uma para cada caractere. A parte 1 do padrão (ISO 10646-1) define que as primeiras 65534 posições de código (0x0000 to 0xfffd), formam o Plano Multilíngue Básico (Basic Multilingual Plane - BMP), que é o plano 0 no grupo 0. A parte 2 do padrão (ISO 10646-2) adiciona caracteres ao grupo 0 que estão fora do BMP nos vários planos suplementares no intervalo 0x10000 até 0x10ffff. Não há planos para se adicionar caracteres depois de 0x10ffff no padrão, então de todo espaço de código, somente uma pequena fração do grupo 0 será sempre usada em um futuro previsto. O BMP contém todos os caracteres encontrado em outros conjuntos usados normalmente. Os planos suplementares adicionados pela ISO 10464-2 cobre somente caracteres muito exóticos de necessidades especiais científicas, impressão de dicionários, industria de publicações, protocolo de alto-nível e entusiastas.
A representação de cada caractere UCS como uma palavra de 2 bytes é referida pela forma UCS-2 (somente para caracteres BMP), enquanto que UCS-4 é a representação de cada caractere por uma palavra de 4 bytes. Adicionalmente, existem duas formas de codificação UTF-8 para tratamento de compatibilidade reversa com processamento ASCII e UTF-16 para tratamento de compatibilidade reversa com caracteres que não estejam no BMP para 0x10ffff para UCS-2.
Os caracteres UCS 0x0000 até 0x007f são idênticos ao clássico conjunto de caracteres US-ASCII e no intervalo de 0x000 até 0x00ff são idênticos ao ISO 8859-1 (Latin-1).
Caracteres
combinantes
Alguns pontos de código no UCS têm sido
atribuídos aos caracteres combinantes. Estes
são similares às teclas de acento de
não-espaçamento em uma máquina de
escrever. Um caractere combinante apenas acrescenta um
acento a um caractere anterior. Os caracteres acentuados
mais importantes têm seus próprios
códigos no UCS, porém o mecanismo de
caracteres combinantes permitem acrescentar acentos e outras
marcas diacríticas a qualquer caractere. Os
caracteres combinantes sempre seguem o caractere que eles
modificam. Por exemplo, o caractere alemão Umlaut-A
("letra A maiúscula com trema") pode ser
representado pelo código UCS pré-composto
0x00c4, ou alternativamente como a combinação
de uma "letra A maiúscula" normal seguida
de um "trema combinante": 0x0041 0x0308.
Caracteres combinantes são essencialmente para codificar a escrita thai ou tipografia matemática e usuários do Alfabeto Fonético Internacional.
Níveis
de implementação
Como nem todo sistema suporta mecanismos avançados,
como caracteres combinantes, a ISO 10646-1 especifica os
três seguintes níveis de
implementação da UCS:
Nível 1 |
Caracteres combinantes e caracteres Hangul Jamo (uma codificação especial e mais complicada da escrita coreana, onde as sílabas Hangul são codificadas como dois ou três códigos vogal/consoante) não são implementados. | ||
Nível 2 |
Em adição ao nível 1, caracteres combinantes são agora permitidos para algumas línguas, onde são essenciais (por exemplo, thai, lao, hebraico, árabe, devangari, malaio, etc.). | ||
Nível 3 |
Todos os caracteres UCS são suportados. |
O padrão Unicode 3.0 publicado pelo Unicode Consortium contém exatamente o Plano Multilíngue Básico do UCS no nível 3 de implementação, como descrito na ISO 10646:2000. Unicode 3.1 adicionou os planos suplementares da ISO 10646-2. O padrão Unicode e relatórios técnicos publicados pelo Unicode Consortium fornecem informações adicionais da semântica e utilização recomendada dos vários caracteres. Ele fornece diretrizes e algoritmos para edição, ordenamento, comparação, normalização, conversão e exibição de strings Unicode.
Unicode no
Linux
No GNU/Linux, o tipo C wchar_t é um tipo
inteiro, com sinal, de 32 bits. Estes valores são
sempre interpretados pela biblioteca C como código
UCS (em todas as localizações), uma
convenção que é assinalada pela
biblioteca GNU C para aplicações pela
definição da constante
__STDC_ISO_10646__ como especificado no padrão
ISO C99.
UCS/Unicode pode ser usado como ASCII nos fluxos de entrada/saída, comunicação de terminais, arquivos de texto simples, nomes de arquivos e variáveis de ambiente na codificação multibyte UTF-8, compatível ASCII. Para sinalizar o uso do UTF-8 como codificação caractere para todos aplicativos, uma localidade (locale) adequada deve ser selecionada pela variáveis de ambiente (por exemplo, "LANG=en_GB.UTF-8").
A função nl_langinfo(CODESET) retorna o nome da codificação selecionada. Bibliotecas de funções como wctomb(3) e mbsrtowcs(3) podem ser usadas para transformar os caracteres wchar_t e strings internas na codificação de caracteres do sistema, e vice-versa, e wcwidth(3) informa quantas posições (0–2) o cursor avança pela saída de um caractere.
Área
de Uso Privativo (PUA)
No Plano Multilíngue Básico, a faixa de 0xe000
até 0xf8ff nunca será atribuída a
qualquer caractere pelo padrão, e é reservada
para uso privativo. Para a comunidade Linux, esta
área privativa foi dividida na faixa de x0e000
até 0xefff, que pode ser usada individualmente por
algum usuário final, e a zona Linux na faixa de
0xf000 até 0xf8ff, onde as extensões
são coordenadas entre todos os usuários Linux.
O registro dos caracteres atribuídos à zona
Linux é mantido por LANANA e o registro em si
é Documentation/admin-guide/unicode.rst no
código-fonte do kernel Linux (ou
Documentation/unicode.txt antes do Linux 4.10).
Dois outros planos estão reservados para uso privativo: plano 15 (Área-A de Uso Privativo Suplementar, faixa de 0xf0000 até 0xffffd) e plano 16 (Área-B de Uso Privativo Suplementar, faixa de 0x100000 até 0x10fffd).
Literatura
* |
Information technology — Universal Multiple-Octet Coded Character Set (UCS) — Part 1: Architecture and Basic Multilingual Plane. International Standard ISO/IEC 10646-1, International Organization for Standardization, Genebra, 2000. |
Esta é a especificação oficial do UCS. Disponível em http://www.iso.ch/">http://www.iso.ch/.
* |
The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5. | ||
* |
S. Harbison, G. Steele. C: Um Manual de Referência. Quarta edição, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. |
Um bom livro de referência sobre a linguagem de programação C. A quarta edição agora cobre também a Emenda de 1994 para o padrão ISO do C 90, que acrescenta um grande número de novas funções da biblioteca C para manipulação de conjuntos de caracteres largos e multi-bytes, mas ele não cobre a ISO C 99, que aprimora o suporte a caracteres largos e multi-bytes.
* |
Relatórios técnicos Unicode. |
http://www.unicode.org/reports/">http://www.unicode.org/reports/
* |
Markus Kuhn: UTF-8 e Unicode FAQ para UNIX/Linux. |
http://www.cl.cam.ac.uk/~mgk25/unicode.html">http://www.cl.cam.ac.uk/~mgk25/unicode.html
* |
Bruno Haible: Unicode HOWTO. |
http://www.tldp.org/HOWTO/Unicode-HOWTO.html">http://www.tldp.org/HOWTO/Unicode-HOWTO.html
VEJA TAMBÉM
locale(1), setlocale(3), charsets(7), utf-8(7)
COLOFÃO
Esta página faz parte da versão 5.07 do projeto Linux man-pages. Uma descrição do projeto, informações sobre relatórios de bugs e a versão mais recente desta página podem ser encontradas em https://www.kernel.org/doc/man-pages/.
TRADUÇÃO
A tradução para português brasileiro desta página man foi criada por Rubens de Jesus Nogueira <darkseid99 [AT] usa.net>, André Luiz Fassone <lonely_wolf [AT] ig.br> e Rafael Fontenelle <rafaelff [AT] 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 <debian-l10n-portuguese [AT] lists.org>.