sábado, 26 de maio de 2012
Unicode, encodings
Estou fazendo uma revisão nos meus estudos sobre fileio.
Estudando uma classe após outra, acabei chegando novamente em encoding e Unicode.
Quando se fala em processamento de texto a unidade básica é um character. É a representação de uma letra ou um sinal gráfico. Usa-se também o termo "glyph". Vem daí hieróglifo.
Um conjunto de characters é um character set. O conjunto da lingua inglesa tem algumas dezenas de carateres, mas o conjunto da lingua chinesa alcança milhares de carateres.
Um conjunto de characters codificado é um coded character set. Unicode é um exemplo. É a associação entre um character e um número.
Code points - são os números que podem ser usados num coded character set.
Character encoding scheme - mapa entre coded character set para code units
Code units: byte, dois bytes, quatro bytes.
Muita confusão foram feitas (e ainda são) nessa área.
No início um byte era suficiente para guardar as informações de texto. 256 possíveis opções, e ainda sobrava. Então, na parte que sobrava, cada um usou sua imaginação e necessidade à vontade. Como tudo isso acontecia antes da globalização, cada um definiu e usou um padrão. ASCII, Cp1252, ISO-8859-1, até chegar em centenas de (falta de) padrões.
Aí, no início dos anos 90 do século passado, surgiu o Unicode para tentar colocar uma ordem nessa verdadeira torre de Babel. O Unicode foi criado com o humilde propósito de representar qualquer character de qualquer lingua existente ou a ser inventada!
Começou com 65.536 possibilidades, que logo se mostrou insuficiente, sendo aumentado para 1.112.064 possibilidades, atualmente. Hoje, são utilizados pouco mais de 100.000.
O Unicode, praticamente se tornou padrão da industria de informática.
Java usa o Unicode.
O conceito do Unicode é simples: 1 character - 1 code point. A confusão começa, devido ao fato de que temos diversas formas de traduzir esse code point em bits.
Na, verdade, isso só acontece devido ao fato de "esquecermos" de informar o código do encoding utilizado para gravar/ler os arquivos de textos.
Se considerarmos que isso é uma espécie de criptografia, não aconteceria isso. Afinal, todos concordam, que se criptografarmos algo, somente teremos acesso à forma original, se fizermos o oposto. Então, se gravarmos um arquivo de texto com UTF-8, devemos ler com UTF-8. E nunca com Cp1252. É claro, que esse "esquecemos", é maneira de dizer. Afinal, na maioria das vezes isso ocorre com dados vindo de fontes que desconhecemos o formato da gravação.
E, então como proceder?
Nos próximos posts vamos fazer alguns testes com isso.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário