Entendendo a Codificação de Caracteres
Autor: Hadston Nunes | Publicado: 2011-04-17T16:12:00-03:00

Desde o primeiro contato com computadores, um melhor entendimento deste assunto me tem sido um desafio.   Nesta época os computadores vinham com sistemas operacionais instalados com versões na linguagem em inglês e o teclado ainda era o padrão internacional, característico por não ter a tecla “Ç”. Até aí, sem problemas. Mas começaram a aparecer versões de sistemas operacionais em português e outros padrões de teclados, como o padrão ABNT. Como eu fui diplomado em datilografia e o layout da máquina de escrever era em ABNT, fiquei intrigado com as mudanças. Ainda me lembro que este foi um dos fatores que me motivou a procurar entender melhor o funcionamento dos computadores e o que encontrei foi manuais impressos do DOS. Nessa época começava a aparecer cursos de informática.  Neste contato o MS-DOS estava saindo da sua versão 5.0 e 5.5 para a versão 6.0, foi quando incluíram o meu utilitário predileto: o QBASIC, um interpretador de comandos da linguagem BASIC. Nesta época já reinava o famoso Norton (que nessa época já fazia frente ao MSAV), o MEMMAKER (otimizador de memória alta de computadores 8x386/486) e o DOSKEY (utilitário de histórico de comandos). Conceitos como memória Baixa e memória Alta, carregar o HIMEM.SYS que permitia o uso da memória Alta e manipulação de scripts de inicialização do sistema operacional se faziam necessários em qualquer manutenção. Ainda hoje me pego consultando manuais, helps e referências como naquela época, mas no Linux.  Foi nesta época que descobri o que era codepage pois para ajustar a linguagem do sistema com o padrão do teclado deveria-se usar alguns desses comandos: NLSFUNC (carregador de informações de internacionalização), CHCP (comando para alterar ou mostrar o codepage), MODE (comando para preparar o dispoditivo de vídeo para receber um codepage) e KEYB (comando que configura o teclado para um idioma específico) com o arquivo de codepage CP850 latin multilingual (também conhecida como código de página IBM) que saiu com a versão do MS-DOS 6.0. O mais fácil era usar o CP437 com o teclado 103 (US international).   Como a pequena veia artística que já brotava não ficou pra trás e desenhar telas com o ANSI.SYS (biblioteca que permitia alterar a exibição gráfica através de caracteres de escape) carregado era fashion. E foi decorando as telas que fazia nas empresas que trabalhei que aprendi sobre a tabela ASCII que tinha por base o alfabeto inglês e era composta por 7 bits. Tinha, também, acabado de entrar em contato com mais um conceito da Computação: Bits e Bytes. ASCII é um acrônimo inglês para Código Padrão Americano para Troca de Informação e como os equipamentos só percebem números esta tabela representa cada informação através de 128 códigos numéricos.  Com a constante evolução tecnológica o mapeamento e codificação para vários idiomas, caracteres combinados, símbolos diacríticos, matemáticos e musicais obrigou organizações de padronização a criar os conjuntos de caracteres como, por exemplo o ISO 8859 de 8 bits que veio para expandir o ASCII. Tanto abordado o assunto virou livro: The Unicode Standard e rendeu o padrão único: Unicode, pai do UCS (Conjunto Universal de Caracteres) e do UTF (Formato de Transformação Unicode).  A Internet chegou e a codificação de caracteres continuou sendo implementada. O Internet Engineering Task Force requer que todos os protocolos utilizados na Internet suportem, pelo menos, o UTF-8 (o conjunto de caracteres, já, mais utilizado no mundo na data em que estou escrevendo este artigo).  Hoje, resolvi escrever sobre o assunto pois me deparei com um problema que sempre me pega e que resolvo com POG (Programação Orientada a Gambiarra, ou seja, resolvo sem entender o que fiz). Como, por exemplo, por que, na maioria das vezes, as saídas PHP ou textos que vêm das tabelas do MySQL ficam ilegíveis no navegador. Pretendo assim, abstrair melhor o que é os famosos Charsets (Conjunto de Caracteres) e Encoding, traduzido aqui como Codificação de Caracteres.  Respostas a estas perguntas num próximo artigo.