De que se trata o artigo

Este artigo ilustra como lidar corretamente com textos codificados no padrão Unicode, mais especificamente com o Lazarus e o Free Pascal.


Em que situação o tema é útil

Lidar com textos é uma tarefa básica que praticamente qualquer programa precisa realizar. Fazer Parsing de textos para obter informações, modificar e gerar novos textos está presente nas mais variadas aplicações. Um navegador, por exemplo, precisa realizar o Parse dos textos em HTML da página. Um cliente de banco de dados irá precisar enviar textos redigidos pelo usuário para serem armazenados. Outro aplicativo qualquer poderá precisar ler um arquivo de configuração. Em todos estes casos, será necessário lidar com textos que podem conter caracteres variados, desde os caracteres latinos mais básicos, até a cedilha e, por que não, caracteres japoneses ou árabes? Para lidar corretamente com estes textos e não empacar na primeira cedilha ou no primeiro a craseado, é necessário aprender a trabalhar corretamente com o Unicode.


Em que situação o tema é útil

Unicode é um padrão que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente. Este padrão é desenvolvido pelo “Unicode Consortium”, uma organização sem fins lucrativos que coordena o desenvolvimento do Unicode com o objetivo de substituir todos outros sistemas de codificação existentes, pois, estes não são adequados para sistemas com múltiplos idiomas. A versão mais recente do Unicode é a 6.0, que suporta pouco mais de 109.000 caracteres e 93 sistemas de escrita. O Unicode é um sucesso mundial e é suportado em todos principais sistemas operacionais (Windows, Linux, Mac OS X, Android, iOS e etc) e também nas principais IDEs de desenvolvimento em Pascal, o Lazarus desde 2006 e o Delphi desde 2009.

Qualquer desenvolvedor já deve ter ouvido falar em ASCII e Unicode, que são as tecnologias mais amplamente utilizadas para codificar textos. Mas se por um lado o ASCII é trivial de se compreender, são poucos os desenvolvedores que realmente compreendem o Unicode e isto é um enorme problema, pois, lidar com textos é fundamental no desenvolvimento de qualquer Software. O desenvolvedor que não souber muito bem como lidar com a tecnologia Unicode, mais cedo ou mais tarde irá enfrentar grandes dificuldades, ou mesmo descobrir que escreveu enormes quantidades de códigos desnecessários e que provavelmente irão parar de funcionar corretamente ao ser confrontados com certos textos Unicode.

O principal desafio ao lidar com o Unicode é deixar para trás hábitos herdados de codificações de texto que já estão completamente obsoletas, mas, que foram utilizadas por décadas. Trata-se das codificações que são capazes de codificar somente os caracteres de um idioma (ou grupo de idiomas) por vez, por exemplo, as várias codificações proprietárias de cada sistema operacional e o ISO 8859. Desde o Windows 3.11 até as versões do Windows 9x, e no Linux até o início dos anos 2000, se utilizou as “Windows Code Pages” para codificar os textos.

Nota do DevMan

Windows Code Pages são conjuntos de caracteres (também conhecidos como “Character Encodings” em outros Sistemas Operacionais) usados nas plataformas Microsoft Windows das décadas de 1980 e 1990. Windows Code Pages foram gradativamente substituídos quando o Unicode foi implementado no Windows, embora estes ainda sejam suportados tanto no Windows quanto em outras plataformas.

Nesse sistema há muitas codificações de texto disponíveis, por exemplo, uma especificamente para os idiomas da Europa ocidental (Windows 1252), outra para idiomas da Europa central (Windows 1250), outra para Russo, Ucraniano, etc (Windows 1251), outra somente para Chinês, outra para Japonês e assim por diante. O resultado é que se torna completamente impossível escrever um aplicativo que possuí textos em vários idiomas ao mesmo tempo, como por exemplo, um dicionário ou um Softwarepara ensinar idiomas. Além dos aplicativos também ficarem restritos ao idioma do sistema operacional, de modo que seria impossível executá-lo em português num Windows 95 Russo. A maioria das pessoas poderia não notar os problemas causados por estas limitações, mas pessoas que viajam com frequência logo notam. É perfeitamente possível que um brasileiro trabalhe em uma empresa brasileira, tenha um Software em português e leve ele em uma viagem ao Japão. Supondo que no Japão há a necessidade de executar o aplicativo. Caso o Software não tenha sido desenvolvido utilizando Unicode, o mesmo não executará corretamente, pois, um computador japonês sem Unicode não seria capaz de desenhar os caracteres do português. Para piorar ainda mais, cada sistema operacional decidiu usar codificações diferentes, ou seja,enquanto o Windows criou suas próprias Windows 1250, 1251, 125e e assim por diante, o Linux utilizou as codificações da ISO: ISO 8859-1 para idiomas latinos da Europa Ocidental, ISO 8859-2 para Europa Central e Oriental e etc. O ISO 8859-1 e o Windows 1252 são parcialmente compatíveis, mas as outras derivações deles nem tanto, há também uma codificação do Mac OS X, incompatível com os dois primeiros, denominada de MacRoman. O resultado é que seria impossível escrever um programa multi-plataforma. Esses tipos de restrições foram os responsáveis pela queda dos sistemas passados de codificar texto e de suas substituições pelo Unicode.

...
Quer ler esse conteúdo completo? Tenha acesso completo