ASCII estendido - Extended ASCII

Saída do programa ascii no Cygwin

As codificações de caracteres ASCII estendidas ( EASCII ou ASCII alto ) são codificações de oito bits ou maiores que incluem os caracteres ASCII de sete bits padrão , além de caracteres adicionais. Usar o termo "ASCII estendido" sozinho às vezes é criticado, porque pode ser interpretado erroneamente como significando que o padrão ASCII foi atualizado para incluir mais de 128 caracteres ou que o termo identifica inequivocamente uma única codificação, nenhuma das quais é a caso.

Existem muitas codificações ASCII estendidas (mais de 220 páginas de código DOS e Windows). EBCDIC ("o outro" código de caractere principal de 8 bits) também desenvolveu muitas variantes estendidas (mais de 186 páginas de código EBCDIC) ao longo das décadas.

História

ASCII foi projetado na década de 1960 para teleimpressores e telegrafia e alguns computadores. Os primeiros teleimpressores eram eletromecânicos, sem microprocessador e apenas com memória eletromecânica suficiente para funcionar. Eles processaram totalmente um caractere por vez, retornando ao estado ocioso imediatamente depois; isso significava que quaisquer sequências de controle deveriam ter apenas um caractere e, portanto, um grande número de códigos precisava ser reservado para tais controles. Elas eram impressoras de impacto derivadas de máquinas de escrever e só podiam imprimir um conjunto fixo de glifos, que eram fundidos em um ou mais elementos de tipo de metal; isso também incentivou um conjunto mínimo de glifos.

ASCII de sete bits melhorado em relação aos códigos anteriores de cinco e seis bits. Dos 2 7 = 128 códigos, 33 foram usados ​​para controles e 95 caracteres imprimíveis cuidadosamente selecionados (94 glifos e um espaço), que incluem o alfabeto inglês (maiúsculas e minúsculas), dígitos e 31 sinais de pontuação e símbolos: todos de os símbolos em uma máquina de escrever americana padrão mais alguns selecionados para tarefas de programação. Alguns periféricos populares implementaram apenas um subconjunto de 64 caracteres de impressão: o modelo de teletipo 33 não conseguiu transmitir de "a" a "z" ou cinco símbolos menos comuns ("` "," {"," | ","} "e "~"). e quando eles receberam esses caracteres, eles imprimiram de "A" a "Z" ( todas as letras maiúsculas forçadas ) e cinco outros símbolos semelhantes ("@", "[", "\", "]" e "^") .

O conjunto de caracteres ASCII mal é grande o suficiente para ser usado em inglês dos EUA e não possui muitos glifos comuns na composição , e é muito pequeno para uso universal. Muitos mais letras e símbolos são desejáveis, úteis ou necessários para representar diretamente letras de alfabetos diferentes do inglês, mais tipos de pontuação e espaçamento, mais operadores matemáticos e símbolos (× ÷ ⋅ ≠ ≥ ≈ π etc.), alguns símbolos exclusivos usados por algumas linguagens de programação, ideogramas , logogramas , caracteres de desenho de caixa, etc. Durante anos, os aplicativos foram projetados em torno do conjunto de 64 caracteres e / ou o conjunto de 95 caracteres, portanto, vários caracteres adquiriram novos usos. Por exemplo, ASCII não tem "÷", então a maioria das linguagens de programação usa "/" para indicar divisão.

O maior problema para os usuários de computador em todo o mundo eram outros alfabetos. O alfabeto inglês do ASCII quase acomoda os idiomas europeus, se as letras acentuadas forem substituídas por letras não acentuadas ou aproximações de dois caracteres. Variantes modificadas de ASCII de 7 bits apareceram imediatamente, trocando alguns símbolos menos usados ​​por símbolos ou letras altamente desejados, como substituir "#" por "£" em teletipos do Reino Unido, "\" por "¥" no Japão ou "₩" na Coréia, etc. Resultaram pelo menos 29 conjuntos de variantes. 12 pontos de código foram modificados por pelo menos um conjunto modificado, deixando apenas 82 códigos "invariantes" . Linguagens de programação, entretanto, atribuíram significado a muitos dos caracteres substituídos, soluções alternativas foram criadas, como sequências de três caracteres C "?? (" e "??)" para representar "{" e "}". Idiomas com alfabetos básicos diferentes podem usar a transliteração, como substituir todas as letras latinas pelas letras cirílicas mais próximas (resultando em um texto estranho, mas de alguma forma legível quando o inglês foi impresso em cirílico ou vice-versa). Esquemas também foram concebidos para que duas letras pudessem ser impressas sobreposta (geralmente com o controle de retrocesso entre elas) para produzir letras acentuadas. Os usuários não se sentiam confortáveis ​​com nenhum desses compromissos e, muitas vezes, eles tinham suporte insuficiente.

Quando os computadores e periféricos padronizaram em bytes de oito bits na década de 1970, tornou-se óbvio que os computadores e softwares podiam lidar com textos que usassem conjuntos de 256 caracteres quase sem custo adicional de programação e sem custo adicional de armazenamento. (Supondo que o 8º bit não utilizado de cada byte não foi reutilizado de alguma forma, como verificação de erros, campos booleanos ou compactação de 8 caracteres em 7 bytes.) Isso permitiria que o ASCII fosse usado inalterado e forneceria mais 128 caracteres. Muitos fabricantes desenvolveram conjuntos de caracteres de 8 bits consistindo em ASCII mais até 128 dos códigos não utilizados. Como a Europa Oriental estava politicamente separada na época, codificações de 8 bits que abrangiam todas as línguas europeias (e latino-americanas) mais usadas, como dinamarquês, holandês, francês, alemão, português, espanhol, sueco e mais, podiam ser feitas, muitas vezes chamado "Latim" ou "Romano".

128 caracteres adicionais ainda não são suficientes para cobrir todos os propósitos, todos os idiomas, ou mesmo todos os idiomas europeus, então o surgimento de muitos conjuntos de caracteres de 8 bits proprietários e nacionais derivados de ASCII era inevitável. A tradução entre esses conjuntos ( transcodificação ) é complexa (especialmente se um caractere não estiver em ambos os conjuntos); e muitas vezes não era feito, produzindo mojibake (texto resultante semilegível , muitas vezes os usuários aprendiam como decodificá-lo manualmente). Eventualmente, houve tentativas de cooperação ou coordenação por órgãos de padrões nacionais e internacionais no final da década de 1990, mas a fabricação de conjuntos proprietários permaneceu de longe o mais popular, principalmente porque os padrões excluíam muitos personagens populares.

Extensões proprietárias

Várias modificações e extensões proprietárias de ASCII apareceram em computadores mainframe não EBCDIC e minicomputadores , especialmente em universidades.

A Hewlett-Packard começou a adicionar caracteres europeus ao seu conjunto de caracteres ASCII estendido de 7 bits / 8 bits HP Roman Extension por volta de 1978/1979 para uso com suas estações de trabalho, terminais e impressoras. Posteriormente, isso evoluiu para os conjuntos de caracteres regulares de 8 bits amplamente usados, HP Roman-8 e HP Roman-9 (assim como várias variantes).

Os computadores domésticos Atari e Commodore adicionaram muitos símbolos gráficos ao seu ASCII não padrão (Respectivamente, ATASCII e PETSCII , com base no padrão ASCII original de 1963).

O conjunto de caracteres TRS-80 para o TRS-80 computador de casa adicionado 64 semigraphics caracteres (0x80 através 0xBF) que implementaram blocos gráficos de baixa resolução. (Cada caractere gráfico de bloco exibido como uma grade 2x3 de pixels, com cada pixel de bloco efetivamente controlado por um dos 6 bits inferiores.)

A IBM introduziu códigos ASCII estendidos de oito bits no IBM PC original e, posteriormente, produziu variações para diferentes idiomas e culturas. A IBM chamou esses conjuntos de caracteres de páginas de código e atribuiu números àqueles que eles próprios inventaram, bem como a muitos inventados e usados ​​por outros fabricantes. Conseqüentemente, os conjuntos de caracteres são frequentemente indicados por seu número de página de código IBM. Em páginas de código compatíveis com ASCII, os 128 caracteres inferiores mantiveram seus valores US-ASCII padrão e páginas diferentes (ou conjuntos de caracteres) podem ser disponibilizados nos 128 caracteres superiores. Os computadores DOS construídos para o mercado norte-americano, por exemplo, usavam a página de código 437 , que incluía caracteres acentuados necessários para francês, alemão e alguns outros idiomas europeus, bem como alguns caracteres gráficos de desenho de linha. O conjunto de caracteres maior possibilitou a criação de documentos em uma combinação de idiomas como inglês e francês (embora os computadores franceses usem a página de código 850 ), mas não, por exemplo, em inglês e grego (que exigia a página de código 737 ).

A Apple Computer introduziu seus próprios códigos ASCII estendidos de oito bits no Mac OS , como o Mac OS Roman . O Apple LaserWriter também introduziu o conjunto de caracteres Postscript .

A Digital Equipment Corporation (DEC) desenvolveu o Multinational Character Set , que tinha menos caracteres, mas mais combinações de letras e diacríticos. Foi suportado pelo VT220 e terminais de computador DEC posteriores . Posteriormente, isso se tornou a base para outros conjuntos de caracteres, como o Lotus International Character Set (LICS), ECMA-94 e ISO 8859-1 .

ISO 8859 e adaptações proprietárias

Eventualmente, a ISO lançou esse padrão como ISO 8859, descrevendo seu próprio conjunto de extensões ASCII de oito bits. O mais popular é o ISO 8859-1 , também chamado de ISO Latin 1 , que continha caracteres suficientes para os idiomas mais comuns da Europa Ocidental. As variações também foram padronizadas para outros idiomas: ISO 8859-2 para idiomas do Leste Europeu e ISO 8859-5 para idiomas cirílicos, por exemplo.

Uma maneira notável pela qual os conjuntos de caracteres ISO diferem das páginas de código é que as posições dos caracteres 128 a 159, correspondentes aos caracteres de controle ASCII com o conjunto de bits de ordem superior, são especificamente não utilizados e indefinidos nos padrões ISO, embora tenham sido usados ​​com freqüência para caracteres imprimíveis em páginas de código proprietárias, uma quebra dos padrões ISO que era quase universal.

Posteriormente, a Microsoft criou a página de código 1252 , um superconjunto compatível de ISO 8859–1 com caracteres extras na faixa ISO não utilizada. A página de código 1252 é a codificação de caracteres padrão das versões do Microsoft Windows em idiomas da Europa Ocidental , incluindo as versões em inglês. ISO 8859-1 é a codificação de caracteres de 8 bits comum usada pelo X Window System , e a maioria dos padrões da Internet a usava antes do Unicode .

Confusão de conjunto de caracteres

O significado de cada ponto de código estendido pode ser diferente em cada codificação. Para interpretar e exibir corretamente os dados de texto (sequências de caracteres) que incluem códigos estendidos, o hardware e o software que lê ou recebe o texto devem usar a codificação ASCII estendida específica que se aplica a ele. Aplicar a codificação errada causa a substituição irracional de muitos ou de todos os caracteres estendidos no texto.

O software pode usar uma seleção de codificação fixa ou pode selecionar de uma paleta de codificações por padrão, verificando as configurações de idioma e nação do computador, lendo uma declaração no texto, analisando o texto , perguntando ao usuário, permitindo que o usuário selecione ou substitua, e / ou padronizando para a última seleção. Quando o texto é transferido entre computadores que usam diferentes sistemas operacionais, software e codificações, aplicar a codificação errada pode ser comum.

Como o alfabeto inglês completo e os caracteres mais usados ​​em inglês estão incluídos nos pontos de código de sete bits do ASCII, que são comuns a todas as codificações (até mesmo a maioria das codificações proprietárias), o texto em inglês fica menos danificado se for interpretado com o codificação incorreta, mas o texto em outros idiomas pode ser exibido como mojibake (um disparate completo). Como muitos padrões da Internet usam ISO 8859-1 e como o Microsoft Windows (usando o superconjunto de página de código 1252 do ISO 8859-1) é o sistema operacional dominante para computadores pessoais hoje, o uso não anunciado do ISO 8859-1 é bastante comum e pode geralmente assumido, a menos que haja indicações em contrário.

Muitos protocolos de comunicação , principalmente SMTP e HTTP , exigem que a codificação de caracteres do conteúdo seja marcada com identificadores de conjunto de caracteres atribuídos pela IANA .

Codificações de caracteres multibyte

Algumas codificações de caracteres multibyte (codificações de caracteres que podem lidar com mais de 256 caracteres diferentes) também são ASCII estendidos verdadeiros. Isso significa que todos os caracteres ASCII são codificados com um único byte com o mesmo valor do ASCII e esses valores não são usados ​​em nenhum outro lugar. Eles podem ser usados ​​em formatos de arquivo em que apenas bytes ASCII são usados ​​para palavras-chave e sintaxe de formato de arquivo, enquanto os bytes 0x80-0xFF podem ser usados ​​para texto livre, incluindo a maioria das linguagens de programação, onde palavras-chave da linguagem, nomes de variáveis ​​e nomes de funções devem estar em ASCII, mas constantes de string e comentários podem usar caracteres não ASCII. Isso torna muito mais fácil introduzir um conjunto de caracteres multibyte em sistemas existentes que usam ASCII estendido.

UTF-8 é ASCII estendido verdadeiro, assim como algumas codificações de Código Unix estendido .

ISO / IEC 6937 não é ASCII estendido porque seu ponto de código 0x24 corresponde ao símbolo monetário geral (¤) ao invés do cifrão ($), mas caso contrário, é se você considerar os pares acento + letras como sendo um caractere estendido seguido por o ASCII.

Shift JIS não é um ASCII estendido verdadeiro. Além de substituir a barra invertida pelo caractere iene , os caracteres multibyte também podem incluir bytes ASCII. Ele evita o uso de delimitadores e controles ASCII, portanto, em muitos casos, como HTML, pode funcionar. O UTF-16 é ainda menos ASCII estendido porque os caracteres ASCII são armazenados como dois bytes com um byte igual a 0x00. Portar um sistema existente para suportar conjuntos de caracteres como Shift JIS ou UTF-16 é complicado e sujeito a erros.

Uso em linguagens legíveis por computador

Para linguagens de programação e linguagens de documentos, como C e HTML , o princípio do ASCII estendido é importante, uma vez que permite muitas codificações diferentes e, portanto, muitas linguagens humanas sejam suportadas com pouco esforço de programação extra no software que interpreta os arquivos de linguagem legíveis por computador .

O princípio do ASCII estendido significa que:

  • todos os bytes ASCII (0x00 a 0x7F) têm o mesmo significado em todas as variantes do ASCII estendido,
  • bytes que não são bytes ASCII são usados ​​apenas para texto livre e não para tags, palavras-chave ou outros recursos que tenham um significado especial para o software de interpretação.

Veja também

Referências

links externos