Os computador não entendem texto por si só. Ao invés disso, cada caractere é representado por um número. Tradicionalmente, cada conjunto de números usados para representar alfabetos e caracteres (conhecido como sistema de codificação, conjunto de codificação ou caracteres) era limitado em tamanho devido a limitações de hardware de computador.
O conjunto mais comum de caracteres (ou pelo menos o mais aceito) é o ASCII (American Standard Code for Information Interchange). Sabe-se que o ASCII é o padrão de software com mais sucesso de todos os tempos. O ASCII moderno foi padronizado em 1986 (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) pelo American National Standards Institute.
O ASCII tem estritamente sete bits, significando que usa padrões de dígitos representáveis por sete digitos binários, o que fornece um alcance de 0 a 127 em decimais. Isto inclui 32 caracteres de controle não visíveis, a maior parte entre 0 e 31, com o caractere de controle final, DEL ou delete em 127. Os caracteres de 32 a 126 são caracteres visíveis: um espaço, marcas de pontuação, letras latinas e números.
O oitavo bit em ASCII era originalmente usado como um bit de paridade para a verificação de erros. Se isto não é desejado, é deixado como 0. Isto significa que, com ASCII, cada caractere é representado por um único byte.
Embora o ASCII fosse suficiente para comunicação em inglês moderno, em outras línguas européias que incluem caracteres acentuados as coisas não foram tão fáceis. Os padrões ISO 8859 foram desenvolvidos para satisfazer essas necessidades. Eles eram compatíveis com ASCII, mas ao invés de deixar o oitavo bit em branco, era usado para permitir mais 127 caracteres em cada codificação. As limitações do ISO 8859 logo vieram à luz, e existem atualmente 15 variantes do padrão ISO 8859 (de 8859-1 até 8859-15). Fora do alcance de bytes do conjunto de caracteres compatível com ASCII, existe freqüentemente um conflito entre as letras representadas por cada byte. Para complicar a interoperabilidade de codificações de caracteres ainda mais, Windows-1252 é usado em algumas versões do Microsoft Windows para línguas do oeste europeu. Este é um super-conjunto de ISO 8859-1, todavia diferente de várias maneiras. Todos conjuntos, porém, têm compatibilidade com ASCII.
O desenvolvimento necessário de codificações completamente diferentes para alfabetos não-latinos, como a EUC (Extended Unix Coding), que é usado para japonês e coreano (e em menor escala para chinês) criou mais confusão, enquanto outros sistemas operacionais ainda usavam diferentes conjuntos de caracteres para as mesmas línguas, por exemplo, Shift-JIS e ISO-2022-JP. Usuários que desejassem ver glifos em cirílico tinham que escolher entre KOI8-R para russo e búlgaro ou KOI8-U para ucraniano, bem como todas as codificações de cirílico como o mal-sucedido ISO 8859-5, e o mais conjunto mais comum Windows-1251. Todos destes conjuntos de caracteres quebraram grande parte da compatibilidade com ASCII (embora a codificação de KOI8 colocasse os caracteres cirílicos em ordem latina, então caso o oitavo bit fosse tirado, o texto ainda é decifrável em um terminal ASCII através de transliteração reversa.)
Isto levou a muita confusão, e também a uma quase total falta de capacidade para comunicação multi-língüe, especialmente em diferentes alfabetos. Aqui entra o Unicode.
O Unicode livra-se da limitação de um único bit tradicional dos conjuntos de caracteres. Ele usa 17 "planos" de 65,536 pontos de código para descrever um máximo de 1,114,112 caracteres. Já que o primeiro plano, conhecido como "Basic Multilingual Plane" ou BMP, contém quase tudo que você precisará usar, muitos fizeram a presunção errada de que o Unicode era um conjunto de caracteres de 16 bits.
O Unicode foi mapeado de diversas maneiras, mas os dois mais comuns são o UTF (Unicode Transformation Format) e UCS (Universal Character Set). O número após UTF indica o número de bits em uma unidade, enquanto o número após UCS indica o número de bytes. UTF-8 tornou-se o meio mais comum de intercâmbio de texto em Unicode como resultado de sua natureza limpa de oito bits, e é o assunto deste documento.
O UTF-8 é uma codificação de caracteres de tamanhos variáveis, o que neste exemplo significa que usa de 1 a 4 bytes por símbolo. Então, o primeiro byte de UTF-8 é usado para codificar ASCII, dando ao conjunto de caracteres compatibilidade com ASCII. UTF-8 significa que ASCII e caracteres latinos são intercambiáveis com pouco aumento no tamanho dos dados, porque somente o primeiro bit é usado. Usuários de alfabetos orientais como japonês, a quem foram designados um alcance de bytes maior são menos felizes, já que isso resulta em até 50% de redundância em seus dados.
UTF-8 permite que você trabalhe em um ambiente multi-língüe e internacionalmente
aceito que atende a padrões, com uma redundância de dados comparativamente
baixa. UTF-8 é o modo preferível de transmitir-se caracteres não-ASCII através
da Internet, através de E-Mail, IRC ou qualquer outro meio. Apesar disso, muitas
pessoas consideram UTF-8 em comunicação online um excesso. É sempre melhor saber
sobre a atitude em relação a UTF-8 em um canal específico, lista de e-mails ou
grupo de Usenet antes de usar UTF-8 em formato
Agora que você entende os princípios por trás do Unicode, você está pronto para começar a usar UTF-8 em seu sistema.
O requisito preliminar para UTF-8 é ter uma versão do glibc instalada que tenha
suporte de línguas nacionais. O meio recomendado de fazer-se isso é o arquivo
A seguir, precisamos decidir se uma locale de UTF-8 já está disponível para nossa língua, ou se precisamos criar uma.
(Troque "en_GB" por seu ajuste de locale desejado) # locale -a | grep 'en_GB' en_GB en_GB.UTF-8
Da saída da linha de comando, temos que obter o resultado com um sufixo
semelhante a
(Troque "en_GB" com seu ajuste de locale desejado) # localedef -i en_GB -f UTF-8 en_GB.utf8
Outra maneira de incluir um locale de UTF-8 é adicioná-lo ao arquivo
en_GB.UTF-8/UTF-8
Existe uma variável de ambiente que precisa ser configurada para poder usar
nossos novos locales de UTF-8:
Outros preferem configurar o locale globamente. Uma circunstância específica
onde o autor particularmente recomenda fazê-lo é quando o
Configurar o locale globamente deve ser feito usando o
(Como sempre, troque "en_GB.UTF-8" por seu locale) LC_ALL="en_GB.UTF-8"
A seguir, o ambiente deve ser atualizado com a mudança.
# env-update >>> Regenerating /etc/ld.so.cache... * Caching service dependencies ... # source /etc/profile
Agora, rode
# locale LANG= LC_CTYPE="en_GB.UTF-8" LC_NUMERIC="en_GB.UTF-8" LC_TIME="en_GB.UTF-8" LC_COLLATE="en_GB.UTF-8" LC_MONETARY="en_GB.UTF-8" LC_MESSAGES="en_GB.UTF-8" LC_PAPER="en_GB.UTF-8" LC_NAME="en_GB.UTF-8" LC_ADDRESS="en_GB.UTF-8" LC_TELEPHONE="en_GB.UTF-8" LC_MEASUREMENT="en_GB.UTF-8" LC_IDENTIFICATION="en_GB.UTF-8" LC_ALL=en_GB.UTF-8
Isto é tudo. Você está agora usando locales de UTF-8, e o próximo passo é a configuração de aplicações que você usa rotineiramente.
Quando o Unicode começou a ganhar momento no mundo do software, conjuntos de caracteres de múltiplos bits não funcionavam bem com línguas como C, na qual muitos dos programas de uso diário são escritos. Até hoje, alguns programas não são capazes de lidar com UTF-8 adequadamente. Felizmente, a maioria é!
Existem várias opções de NLS no menu de configuração de kernel do Linux, mas é importante não se confundir! Para a maior parte, a única coisa que você precisa fazer é construir suporte de UTF-8 NLS no kernel, e mudar a opção padrão de NLS para utf8.
File Systems --> Native Language Support --> (utf8) Default NLS Option <*> NLS UTF8(Também marque <*> em outros conjuntos de caracteres que são usados por sistemas de arquivos FAT ou CD-ROMs Joilet.)
Se você planeja montar partições NTFS, você pode ter que especificar uma opção
File Systems --> DOS/FAT/NT Filesystems --> (437) Default codepage for fat
Você deve evitar configurar
Para mudar a codificação dos nomes de arquivos,
# emerge --ask app-text/convmv(Formato de comando) # convmv -f <codificação-atual> -t utf-8 <nomedoarquivo>(Troque iso-8859-1 com o conjunto de caracteres a partir do qual você está convertendo) # convmv -f iso-8859-1 -t utf-8 nomedoarquivo
Para mudar o
(troque iso-8859-1 com o conjunto de caracteres a partir do qual você está convertendo) (Veja se a saída é o esperado) # iconv -f iso-8859-1 -t utf-8 nomedoarquivo(Converta um arquivo, você deve criar outro arquivo) # iconv -f iso-8859-1 -t utf-8 nomedoarquivo > novoarquivo
Para ativar UTF-8 no console, você deve editar o
A variável
(Troque "uk" pelo seu arranjo local) KEYMAP="uk"
É sábio adicionar
# emerge --update --deep --newuse world
Nós também precisamos re-construir pacotes que ligam a estes, agora que as
opções de USE foram aplicadas. A ferramenta que nós usamos
(
# revdep-rebuild --soname libncurses.so.5 # revdep-rebuild --soname libslang.so.1
Todos principais ambientes de desktop tem suporte total a Unicode, e não precisarão configurar mais do que já foi coberto neste guia. Isto é porque os toolkits gráficos (Qt ou GTK+2) são cientes de UTF-8. Subseqüentemente, todas aplicações rodando em cima dos toolkits devem ser cientes de UTF-8 sem ajustes adicionais.
As exceções à regra estão em Xlib e GTK+1. O GTK+1 precisa de uma FontSpec
iso-10646-1 no ~/.gtkrc, por exemplo
style "user-font" { fontset="-misc-fixed-*-*-*-*-*-*-*-*-*-*-iso10646-1" } widget_class "*" style "user-font"
Se uma aplicação tiver suporte tanto para uma GUI de Qt quanto de GTK+2, a GUI de GTK+2 irá geralmente dar melhores resultados com Unicode.
Fontes TrueType têm suporte para Unicode, e maior parte das fontes que vêm com o
Xorg tem suporte de caracteres impressionante, embora, obviamente, nem todo
glifo disponível em Unicode tenha sido criado para aquela fonte. Para construir fontes
(incluindo o conjunto Bitstream Vera) com suporte para letras do leste asiáticos para X,
certifique-se que você tem a opção de USE
Também, vários pacotes de fonte no Portage são cientes de Unicode.
# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts
Gerenciadores de janela não construídos com GTK ou Qt geralmente tem suporte muito bom a Unicode, já que freqüentemente usam a biblioteca Xft para lidar com fontes. Se seu gerenciador de janelas não usar Xft para fontes, você ainda pode usar a FontSpec mencionada na seção anterior como uma fonte de Unicode.
Emuladores de terminal que usam Xft e suportam Unicode são mais difíceis de
aparecer. Fora o Konsole o gnome-terminal, as melhores opções no Portage são
defutf8 on
O Vim fornece suporte completo de UTF-8, e também tem detecção interna de
arquivos UTF-8. Para mais informações sobre o Vim, use
O Emacs 22.x e superiores também têm suporte completo e UTF-8. O Xemacs 22.x ainda não suporta combinação de caracteres.
As versões inferiores de Emacs e/ou Xemacs podem necessitar que você instale
(require 'un-define) (require 'jisx0213) (set-language-environment "Japanese") (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8)
Atualmente o nano não fornece suporte de UTF-8, embora já esteja planejado por bastante tempo. Com sorte, isto mudará no futuro. Na época desta escrita, suporte de UTF-8 está no CVS do nano, e deve ser incluído no próximo lançamento.
Atualmente,
A C shell,
Irssi tem suporte completo de UTF-8, embora precise de que o usuário configure uma opção.
/set term_type UTF-8
Para canais onde caracteres não-ASCII são freqüentemente trocados em conjuntos
de caracteres não-UTF-8, o comando
O agente de e-mail de usuário Mutt também tem bom suporte a Unicode. Para usar UTF-8 com o Mutt, você não precisa colocar nada em seus arquivos de configuração. O Mutt irá funcionar em um ambiente unicode sem modificação se todos seu arquivos (inclusive a assinatura) estiverem codificados em UTF-8.
Mais informações estão disponíveis no
Nós usamos muito
LESSCHARSET=utf-8
Páginas de man são uma parte integral de qualquer máquina rodando Linux. Para
ter certeza de que qualquer unicode em suas páginas de man sejam desenhados
corretamente, edite
(Esta é a linha velha) NROFF /usr/bin/nroff -Tascii -c -mandoc(Troque a linha com esta) NROFF /usr/bin/nroff -mandoc -c
Estes dois são navegadores de texto comumente usados, e veremos como podemos
ativar suporte a UTF-8 neles. No
(Para elinks, edite /etc/elinks/elinks.conf ou ~/.elinks/elinks.conf e adicione a linha seguinte) set terminal.linux.utf_8_io = 1(Para links, edite ~/.links/links.cfg e adicione a seguinte linha) terminal "xterm" 0 1 0 us-ascii utf-8
Existem vários websites para teste de UTF-8.
Quando estiver usando um dos navegadores da web somente de texto, tenha certeza de que você está usando um terminal ciente de Unicode.
Se você vir certos caracteres exibidos como caixas com letras ou números dentro, isto significa que a sua fonte não tem o caractere ou glifo para o símbolo que o UTF-8 deseja. No caso, ele mostra uma caixa com o código hexadecimal do símbolo em UTF-8.
Para ativar dead keys no X, você precisa de um arranjo que o suporte. A maior
parte dos arranjos europeus têm dead keys como uma variante padrão. No entanto,
isto não vale para arranjos norte-americanos. Embora haja um grau de
inconsistência entre os arranjos, a solução mais fácil parece ser usar um
arranjo na forma "en_US" ao invés de "us", por exemplo. O arranjo é configurado
no
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "en_US"# Ao invés de só "us" (Outras opções de Xkb aqui) EndSection
Está mudança entrará em efeito quando seu servidor de X for reiniciado. Para
aplicar a mudança agora, use a ferramenta
É provavelmente mais fácil descrever dead keys com exemplos. Embora os resultados dependam do locale, os conceitos devem permanecer os mesmos independente do locale. Os exemplos contêm UTF-8, então para vê-los você precisa ou falar para seu navegador ver a página como UTF-8, ou já ter um locale de UTF-8 configurado.
Quando aperto AltGr e [ juntos, solto-os, e então aperto a, 'ä' é produzido. Quando aperto AltGr e [ juntos, solto-os, e então aperto e, 'ë' é produzido. Quando aperto AltGr e ; juntos, 'á' é produzido, quando aperto AltGr e ; juntos, solto-os, e aperto e, 'é' é produzido.
Ao apertar AltGr, Shift e [ juntos, soltá-los, e apertar a, um 'å' escandinavo é
produzido. De maneira semelhante, quando aperto AltGr, Shift e [ juntos, solto
AltGr pode ser usado com teclas alfabéticas sozinhas. Por exemplo, AltGr e m, uma letra grega minúscula mu é produzida: 'µ'. AltGr e s produzem um scharfes s ou esszet: 'ß'. Como muitos usuários europeus esperam (já que está marcado em seus teclados), AltGr e 4 (ou E dependendo do arranjo do teclado) produzem um símbolo do Euro, '€'.