A qual padrão ANSI Joel está se referindo?

A qual padrão ANSI Joel está se referindo?

Eu estava relendo a postagem clássica do blog de Joel SpolskyO mínimo absoluto que todo desenvolvedor de software deve saber absolutamente e positivamente sobre Unicode e conjuntos de caracteres (sem desculpas!)e notei esta passagem:

Eventualmente, este OEM gratuito foi codificado emo padrão ANSI (ênfase minha).No padrão ANSI, todos concordavam sobre o que fazer abaixo de 128, que era praticamente o mesmo que ASCII, mas havia muitas maneiras diferentes de lidar com os caracteres de 128 em diante, dependendo de onde você morava. Esses diferentes sistemas foram chamadospáginas de código.

A qual padrão ANSI este texto se refere? Na verdade, o American National Standards Institute publicou uma série de normas (afinal, é isso que eles realmentefazer),mas não consegui descobrir qual.

Meu palpite mais próximo sobre o que isso pode aludir é que na verdade se trata da ISO-8859, e talvez este documento tenha começado como um padrão americano antes de ser adotado como um padrão internacional; mas isso não faz sentido no contexto da padronização de "páginas de código" e conjuntos de caracteres "OEM".

WikipédiaPágina de códigoartigomenciona um padrão IBM e observa que a IANA mantém um registro de mapeamentos de páginas de código, mas obviamente nenhum deles é ANSI.

Meu entendimento é que ANSI não padronizou nenhum conjunto moderno de caracteres de 8 bits e que "ANSI" neste contexto geralmente se refere à terminologia confusa agora abandonada da Microsoft (onde "ANSI" era aparentemente usado para significar algo como o atual página de código selecionada).

Existe um padrão que estou ignorando? Ou há simplesmente (suspiro) um erro no blog de Joel?

Responder1

Isto é um quebra-cabeça, então vamos reunir todos os fatos conhecidos. Nos estamos procurando por:

  • Um padrão ANSI
  • Sobre conjuntos de caracteres
  • Que especificou os primeiros 128 pontos de código
  • E foi a base para páginas de código e todos os padrões seguintes para conjuntos de caracteres.

O resultado para mim é apenas um - o Padrão ASCII. Acredito que este foi o primeiro padrão da ANSI a especificar os primeiros 128 pontos de código e, na verdade, também o último.

Embora o ASCII tenha evoluído detalhadamente posteriormente, seu principal desenvolvimento começou em 1963. Este padrão foi desenvolvido pela filial americana da Organização Internacional de Padronização (ISO), que é a ANSI. Como este padrão omitiu referência a caracteres não americanos, e como as páginas de código que se seguiram e tentaram responder a essa questão eram uma verdadeira bagunça desorganizada, podendo concordar apenas na parte ASCII, o trabalho de padronização foi assumido pelo organização internacional da própria ISO.

Historicamente falando, o Norma ISO/IEC 8859 chegou entre o ASCII e as páginas de código, mas este não era um padrão ANSI, elaborado sim pela ISO.

"Páginas de código ANSI" era um nome impróprio para Páginas de código do Windowsque foram criados pela Microsoft e não pela ANSI. Uma variante era a página de código de Windows-1252, que mais tarde ficou conhecido como ISO/IEC 8859-1.

A história real dos conjuntos de caracteres é bastante complicada, e seria necessário um extenso trabalho de detetive para estabelecer cronogramas, influências cruzadas e padrões ou definições de fato resultantes. Mas tudo foi iniciado pelo ASCII, que criou a base para toda a evolução futura culminando em Unicode e UTF-8.

Responder2

De acordo comsua página da Wikipédiaos caracteres de controle C0 e C1 são definidos em ANSI x3.4.

Isso inclui as sequências de escape para formatação de texto estendida que são usadas porISO 2022eISO 8859para permitir conjuntos de caracteres internacionais de vários bytes.

Por exemplo, ESC $ @ e ESC $ B mudam para diferentes codificações japonesas de 2 bytes, enquanto ESC ( B volta para US-ASCII. Esses podem ser padrões ISO (ou ECMA), mas usam códigos de controle ANSI, então este é provavelmente um equívoco parcial.

Responder3

Sem a contribuição de Joel, não podemos ter certeza, mas com base nas outras tentativas de resposta aqui e nas falhas que percebo nelas, deixe-me apresentar o que considero uma especulação óbvia e simples:

Não existe um padrão ANSI real aqui, e Joel está encobrindo as coisas.

O que exatamente está sendo resumido e possivelmente misturado aqui é definitivamente menos certo, mas meu palpite é que ele está falando sobre o desenvolvimento de páginas de código do Windows, que por um tempo foram chamadas de "páginas de código ANSI" pela Microsoft, embora nunca tenha havido havia qualquer conexão tangível com o American National Standards Institute, possivelmente fora de um esforço malsucedido para padronizar a página de código 1252 do Windows como um "ASCII estendido" com vários caracteres acentuados para alguns idiomas da Europa Ocidental e símbolos úteis para composição tipográfica e expressões matemáticas simples. De acordo com algumas fontes, foi isso que resultou emISO/IEC 8859-1e eventualmente a família maior deISO 8859padrões para conjuntos de caracteres de 8 bits para várias regiões (veja tambémECMA-94).

Para que conste, a ASA e depoisComitê ANSI X3foi responsável pelo padrão ASCII (ASA X3.4, depois ANSI X3.4, depois ISO 646), bem como pelo padrão X3.64 para sequências de controle de tela ASCII para terminais de exibição. Publicações notáveis ​​deste comitê no final da década de 1980 incluem uma proposta para a linguagem C e algo chamado "Pascal estendido", bem como a interface de hardware SCSI, mas não consegui encontrar nada relacionado aos conjuntos de caracteres desse período.

Responder4

https://en.wikipedia.org/wiki/ASCII#History

De acordo com esta lista, o primeiro padrão ANSI que define ASCII foi ANSI X3.4-1977.

informação relacionada