FISL 14: Unicode

Nesta palestra, Douglas Villanacci Pasqua apresentou um pequeno histórico da codificação de caracteres em computadores, iniciando pelo padrão ASCII, até as versões atuais do Unicode.

O padrão ASCII foi definido como tendo 8bits, contudo apenas 7bits eram utilizados. O bit adicional era utilizado como controle e inicialmente cobria apenas os caracteres americanos, sem acentuação. Mais tarde, foram criados padrões novos, que contemplavam as letras acentuadas e utilizavam todos os 8bits na codificação (ou seja, até o caractere de controle era utilizado).

O ISO-8859-1, conhecido informalmente como Latin-1, foi um dos primeiros desses padrões e cobria a maioria dos caracteres e acentuações do ocidente. Contudo, devido a quantidade limitada de possibilidades de codificação com 8bits (256 caracteres), não era possível ter todos os acentos e letras do mundo representados, dessa forma nasceu o padrão Unicode.

A primeira versão do Unicode foi a UTF-8, compatível com o padrão ASCII. Se o primeiro bit, ou bit significativo, começa com “1”, significa que é um controle e vai até encontrar o primeiro byte com bit significativo “0”. Isso permite que os caracteres sejam representandos com 1byte ou com até 4bytes. É o melhor padrão de representação Unicode, pois ocupa menos espaço dentre eles.

Após, surgiu o UTF-16 e o UTF-32. O UTF-32 não tem mais o tamanho variável sendo sempre representado com 4bytes, enquanto o UTF-16 é uma representação intermediária, tendo 2 ou 4bytes, conforme o carácter.

Um detalhe interessante que o palestrante apresentou é que o PHP5 não tem suporte nativo ao Unicode. Isso causa alguns efeitos bizarros com funções de string. Por exemplo, se você estiver usando Unicode no PHP e eventualmente tentar contar a quantidade de caracteres de uma palavra acentuada, cada carácter não ASCII terá 2bytes ou mais.

O Unicode está em discussão para ser adotado no PHP6. Esse é mais um dos motivos que me deixam feliz em usar Perl como linguagem de programação, pois o Unicode já é padrão a muito tempo.

Como referências, o palestrante deixou o link do site do consórcio Unicode: http://unicode-table.com/ e para o seu blog: http://dpasqua.wordpress.com/, onde pode ser encontrado os slides da palestra, neste link.

Essa palestra foi muito interessante para entender melhor o funcionamento da codificação de caracteres. Até hoje, eu utilizava padrões Unicode em projetos Web, mas não entendia muito bem o significado e as diferenças dos padrões UTF-8 e UTF-16. Obrigado Douglas pela excelente palestra!

Tags: , , ,

Deixe um comentário