Desvendando os mistérios do Charset – Revista Java Magazine 109
Neste artigo, apresentaremos desde os primórdios do código Morse e da tabela ASCII, até o nascimento do padrão Unicode, para explicar como funcionam os sistemas de codificação e seus principais problemas dentro da plataforma Java.
Neste artigo, apresentaremos desde os primórdios do código Morse e da tabela ASCII, até o nascimento do padrão Unicode, para explicar como funcionam os sistemas de codificação e seus principais problemas dentro da plataforma Java.
Em que situação o tema é útil:
Quem ainda não teve problemas de codificação certamente um dia terá. Com base nisso, este artigo visa auxiliar na redução do sofrimento causado por este tipo de problema e ainda diminuir o tempo gasto com soluções baseadas em tentativa e erro.
Desvendando os mistérios do Charset:
Este artigo tem como objetivo chamar a atenção para um tema complicado e que a maior parte dos desenvolvedores acaba dando pouca importância no dia a dia. Para isso vamos apresentar as origens dos sistemas de codificação e uma série de dicas para ajudar a resolver problemas e evitar dores de cabeça no futuro.
Quem nunca passou vergonha na hora de apresentar um software recém-implementado e se surpreendeu com caracteres estranhos, e até misteriosos, tomando o lugar da acentuação das palavras?
Esse tipo de problema é extremamente comum e costuma acompanhar a maior parte dos desenvolvedores de software ao longo de suas vidas profissionais. Entretanto, tentar resolvê-lo na base da tentativa e erro ou ainda recorrendo a outros tipos de ciências esotéricas pode não dar certo e ainda prolongar o sofrimento.
Na maior parte das vezes é extremamente simples resolver esse tipo de mal entendido entre diferentes sistemas de codificação, no entanto, como várias partes do software e principalmente de seu ambiente são afetadas, pode ser traumático encontrar o local exato para efetuar os ajustes.
Neste artigo, vamos a fundo às raízes do problema, apresentando desde os primórdios do código Morse e da tabela ASCII, até o nascimento do padrão Unicode, para explicar como funcionam os mecanismos de conversão de caracteres nas profundezas do Java.
Tudo começou com o Código Morse
Em 1836, Samuel F. B. Morse, Joseph Henry e Alfred Vail desenvolveram um importante meio de comunicação, baseado na transmissão de pulsos elétricos, conhecido como telégrafo. Na época, o sistema de codificação utilizado para transmitir mensagens de maneira rápida e confiável era o código Morse. Este consistia na representação das letras do alfabeto e números por meio de pulsos elétricos longos e curtos, como pode ser visto na Figura 1.
Figura 1. Código Morse com seus pulsos longos e curtos.
Em suas primeiras versões, o código Morse não contava com letras minúsculas, acentuadas ou mesmo sinais de pontuação, e foi sendo estendido ao longo do tempo conforme se estabeleciam comunicações entre diferentes idiomas. Muitos anos mais tarde, o mesmo processo de evolução ocorrido com o código Morse foi acontecendo com os sistemas de codificação dos computadores, que veremos a seguir.
Entendendo os sistemas de codificação de caracteres
Um sistema de codificação de caracteres, ou character encoding, consiste em uma forma de associar um determinado conjunto de letras, números e símbolos, a um tipo de representação – números binários, hexadecimais ou mesmo pulsos elétricos – com o objetivo de facilitar a transmissão e o armazenamento dos dados.
Em 1963, a American Standards Association criou uma tabela de codificação de caracteres chamada ASCII, com o objetivo de padronizar o sistema de codificação utilizado na época, quando era comum que cada fabricante criasse seus próprios sistemas, o que causava incompatibilidade entre diferentes plataformas.
Essa tabela utilizava um conjunto de 7 bits para representar 128 caracteres, o que era suficiente para exibir todas as palavras e símbolos mais utilizados em textos escritos na língua inglesa. Entretanto, para os idiomas latinos, que em geral possuem muitas palavras acentuadas, além de outros tipos de pontuação, o ASCII não era suficiente. Por esse motivo, a ISO ("
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo