O que é ASCII, UNICODE e UTF-8 ?

Maio 2017


O ASCII


O computador é uma grande calculadora: tudo que ele sabe fazer é executar cálculos com números. Ele é incapaz de entender o texto.
Portanto, devemos fazer uma escolha: que número utilizaremos para representar a letra "A"? E para os sinais de pontuação, que números de usar?
Existem diferentes convenções (ou códigos). Um dos mais conhecidos é o código ASCII (American Standard Code for Information Interchange). Este é um padrão americano, mas é um dos mais utilizados, especialmente na maioria dos computadores.

O código ASCII define, com precisão, a correspondência entre símbolos e números até o número 127:

Portanto, use o número 97 para representar um "a" minúsculo. Para representar um "?", use o código 63.

Alguns códigos (os inferiores a 32) são códigos de controle (eles não são feitos para serem exibidos). Por exemplo, o código 10 pula a linha, o código 7 emite um sinal sonoro no computador, etc.
Mas você já reparou? Não há nenhum caractere acentuado! Os americanos nos esqueceram. Nós e outros países: a Espanha (com o ponto de interrogação ao contrário, por exemplo), a Alemanha, etc. Sem falar em países como a China e o Japão, com seus alfabetos diferentes...
Muitas vezes usamos os códigos de 128 a 255 para os acentos, mas os códigos são diferentes de um país para outro! Nada prático para trocar documentos.

Assim, é preciso encontrar um código mais prático. Ele existe: é o UNICODE.

O UNICODE


Em vez de usar apenas os códigos de 0 a 127, ele utiliza os códigos de valor bem maiores.

O código UNICODE pode representar todos os caracteres específicos de diversos idiomas. Novos códigos são regularmente atribuídos para novos caracteres: caracteres latinos (acentuados ou não), gregos, cirílicos, armênios, hebraicos, tailandeses, hiraganas, katakanas, etc... Só o alfabeto chinês Kanji contém 6879caracteres.

O Unicode define, então, uma correspondência entre símbolos e números.
(O símbolo "?" será representado pelo número 213).
Veja uma pequena parte das tabelas UNICODE (os números são apresentados em notação hexadecimal):

Caracteres Unicode de 0000 a 007F (de 0 a 127) (caracteres latinos)

Caracteres Unicode de 0080 a 00FF (de 128 a 255) (caracteres latinos, logo, com acentos)

Caracteres Unicode de 0900 a 097F (de 2304 a 2431) (caracteres devanagari)

Caracteres Unicode de 1100 a 117F (de 4352 a 4479) (caracteres hangul jamo)

Você pode encontrar mais informações sobre o UNICODE aqui.

Mesmo se o UNICODE foi bem desenvolvido, pouca coisa foi utilizada em relação ao ASCII. (Não envie uma mensagem em UNICODE para alguém: provavelmente esta pessoa não poderá lê-la!). Mesmo para os programadores, nem sempre é fácil de manipulá-lo.

Este padrão está crescendo cada vez mais. As linguagens Java,. Net (C#) e o Python, originalmente, já suportam o UNICODE. A maioria dos sistemas operacionais (Windows, Linux, MacOS X,...) já suportam o Unicode.

UNICODE na prática: UTF-8


Bom. O Unicode, em teoria, e muito bom.
Mas, na prática, a história é outra:
Normalmente, em Unicode, um caractere usa 2 bytes. Em outras palavras, qualquer texto usa duas vezes espaço que no ASCII. É um desperdício.
Além disso, se tomarmos como exemplo um texto em português, a grande maioria dos caracteres só utiliza o código ASCII. São raros os caracteres que requerem o Unicode.
Nós descobrimos um truque: o UTF-8.
Um texto em UTF-8 é simples: ele é completamente em ASCII e, quando precisamos de um caractere do Unicode, usamos um caracter especial, que indica "atenção, o seguinte caractere é em Unicode".
Por exemplo, para o texto "Bienvenue chez Sébastien"(em francês), apenas o "é" não faz parte do código ASCII. Então, escrevemos em UTF-8:

De qualquer maneira, para ser mais rigoroso, indicamos o início do arquivo, que é um arquivo em UTF-8, com caracteres especiais:
Prontinho!

O UTF-8 reúne o melhor de dois mundos: a eficiência do ASCII e o âmbito do Unicode. Aliás, o UTF-8 foi adotado comom padrão para codificação de arquivos XML. A maioria dos navegadores atuais também suportam o UTF-8 e o detectam, automaticamente, nas páginas HTML.

E nas páginas Web, como fazer?


Se você colocar diretamente o caractere "é" em uma página web, isto não é bom . Você deverá, obrigatoriamente, escolher uma dessas três soluções:
  • Ou usar as entidades HTML e colocar , no lugar do "é".
  • Ou deixar o "gras>é</gras>" assim mesmo, e especificar a codificação de caracteres que você usará, no início do arquivo HTML (na tag <head>):

<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">

(ISO-8859-1 é o conjunto de caracteres latinos em execução no Windows.)
  • Ou trabalhar diretamente em UTF-8 no seu editor de HTML (se for possível). Em seguida, acrescentar:

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

O ISO-8859-1 é adequado para a maioria dos idiomas latinos ou ocidentais (inglês, francês, alemão, espanhol,...), e o UTF-8 será indispensável para as outras línguas (japonês, hebráico, etc.).

Você deverá escolher de acordo com as suas necessidades.


Artigo original publicado por sebsauvage

Tradução feita por Lucia Maurity y Nouira

Veja também

Publicado por pintuda. Última modificação: 2 de outubro de 2011 às 08:47 por pintuda.
Este documento, intitulado 'O que é ASCII, UNICODE e UTF-8 ?', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.