ASCII, HTML, RTF, ISO-8859-1, etc

Olá,

Alguém sabe a diferença entre os formatos ASCII e ISO-8859-1. Arquivo ASCII são arquivos não binários? Um arquivo HTML ou RTF é um arquivo ASCII? Bens, essas são algumas das minhas mil dúvidas :smiley:

Davi Cabral

Esse texto é excelente, mas não específico para Java:


The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

Mais especificamente, tudo que passa na memória e CPU dos computadores atuais é binário. Portanto ASCII é binário nesse sentido. É um código que usa 7 bits para representar cada caractere (letra, dígito numérico, etc). Mas o uso corrente da palavra binário é para distinguir “plain text”, texto claro, que costuma ser ASCII, de representações específicas para algum programa, como o .xls do Excel.
Existem 128 caracteres representáveis em ASCII (2^7=128), mas os computadores atuais trabalham com bytes de 8 bits cada. Sobra 1 BIT. Foram criadas várias extensões do ASCII para usar esse bit extra (2^8=256), afinal são 128 caracteres jogados fora. O ISO-8859 é um padrão de uma dessas extensões do ASCII. Esse artigo explica tudo o que eu disse melhor.

CORREÇÃO: eu tinha escrito caractere em um lugar onde devia estar escrito bit. Agora está certo.

complementando: um arquivo html ou rtf eh plain text. mas geralmente usa uma codificacao como iso-8859-1 ou utf-8 (as mais famosas).

no topo do html, por exemplo, vc deve declarar o charset da pagina para o browser ler corretamente.

“plaintext” eh soh uma ilusao, Sergio. Leia o artigo do Joel pra entender pq :wink:

o q vc quer dizer com ilusao?
um arquivo html eh texto (nao eh binario) mas nao eh “ascii puro” pq usa um encoding… to falando alguma besteira?

Aquele artigo resume tudo em uma simples frase: “It does not make sense to have a string without knowing what encoding it uses.”

entao plain text seria uma ilusao pq na verdade tudo depende da codificacao (logico). se vc pensar no ascii como uma codificacao como outra qualquer, pode ate fazer algum sentido. mas o ascii nao eh meio normal, eh o alicerce de tudo…

seria a mesma coisa de dizer que um numero nao faz o menor sentido sem saber a sua base. mas um numero sempre eh base 10 ate q se diga o contrario…

Vc forçou demais aqui Sérgio. Até posso concordar que ASCII seja alicerce pra todos os seus derivados (ISO-8859-1, os encodings do windows, etc), ou seja, é alicerce de muita coisa, mas está longe de ser alicerce de tudo.

“tudo” eh tudo q tem a ver com o assunto ne! eh o alicerce dos encodings e tal… isso q eu disse.

ASCII ficou bem popular por isso vários encodings surgiram que simplesmente extendiam o ASCII. É por isso que a representação mais popular do Unicode é o UTF-8 que é indistínguível do ASCII para os primeiros 127 caracteres.

Mas não dá para dizer que ASCII é a base não. Veja por exemplo o UTF-16, que é razoavelmente popular. Se vc pegar um arguivo UTF-16 e tentar ler como ASCII só vai aparecer lixo.

nao sei aonde estao querendo chegar! o ascii eh a base de tudo, tudo nasceu depois dele (nao q tudo seja compativel com ascii!!). e o fato de plain-text existir ou nao, ate agora nao entendi (ou nao concordo). como vc diferencia um arquivo .java de um .class por exemplo?

Nem eu sei onde vc esta querendo chegar repetindo incansavel - e erroneamente - que ASCII eh “a base de tudo”. EBCDIC eh outro encoding bastante conhecido no mundao dos mainframes, e nao tem NADA A VER com ASCII. E veio antes, se nao me engano, entao vc nao pode dizer que ASCII eh o pai de todos, o que, mesmo assim, eh irrelevante pra justificar a situacao atual: nao existe string sem encoding.

Alias, respondendo a sua pergunta sobre a diferenca entre um arquivo .java e um .class: nenhuma, fundamentalmente. Ambos sao punhados de bytes. A diferenca eh que, quando voce olha pra um .java atraves das lentes de um encoding, voce consegue enxergar codigo-fonte. Alias, tanto voce quanto um compilador :wink:

eh logico q ascii nao foi o primeiro extamente cronologicamente (deve ter existido milhares antes do ascii). ascii eh o 1o da era q vivemos hoje, onde ele eh a base… nao sou expert em encodings (jurassicos e nao-jurassicos), mas acho q todos aqui entenderam o q quis dizer com “base”.

enfim, eh irrelevante.
a grande questao eh: eu e o resto do mundo estamos errados qdo falamos de plain text?? vcs dizem q sim pq na verdade tudo eh bit, mas eu ja acho apelacao… nessa linha de pensamento, bit eh uma ilusao pq o q existe na verdade sao elétrons :slight_smile:

Sim. E acho que as razoes ja estao claras :wink:

Sim. E acho que as razoes ja estao claras ;)[/quote]

forma interessante de se pensar. mas eu discordo :shock:
nao que esteja errado (pois nao esta), mas eh um tanto radical. as classificacoes existem para facilitar nossa vida… mas, logico, no fundo eh tudo igual… (ate na natureza, nao? tudo atomos… mas nem por isso eu deixo de chama-lo de cv e te diferencio de um abajur :wink: )

e quem quiser saber resumidamente o q eu e o resto do mundo entendemos por arquivos texto e arquivos binarios, pode vir aqui: http://en.wikipedia.org/wiki/Plain_text