
Ich habe Joel Spolskys klassischen Blogbeitrag noch einmal gelesenDas absolute Minimum, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss (keine Ausreden!)und bemerkte diese Passage:
Schließlich wurde dieser OEM-Wettstreit kodifiziert inder ANSI-Standard (Hervorhebung von mir).Im ANSI-Standard war man sich einig, was unter 128 zu tun war, was im Großen und Ganzen dem ASCII-Standard entsprach, aber es gab viele verschiedene Möglichkeiten, die Zeichen ab 128 zu handhaben, je nachdem, wo man lebte. Diese verschiedenen Systeme wurden genanntCodepages.
Auf welchen ANSI-Standard bezieht sich dieser Text? Das American National Standards Institute hat eine Reihe von Standards veröffentlicht (schließlich ist das das, was sie eigentlichTun),Aber ich konnte nicht herausfinden, welches.
Meine beste Vermutung ist, dass hier eigentlich von ISO-8859 die Rede ist und dass dieses Dokument vielleicht ursprünglich ein amerikanischer Standard war, bevor es als internationaler Standard übernommen wurde. Im Kontext der Standardisierung von „Codepages“ und „OEM“-Zeichensätzen ergibt das allerdings keinen Sinn.
WikipediaCodepageArtikelerwähnt einen IBM-Standard und weist darauf hin, dass IANA ein Register mit Codepage-Zuordnungen pflegt; offensichtlich handelt es sich dabei aber nicht um ANSI.
Nach meinem Kenntnisstand hat ANSI keinen modernen 8-Bit-Zeichensatz standardisiert und „ANSI“ bezieht sich in diesem Kontext im Allgemeinen auf die mittlerweile aufgegebene, verwirrende Terminologie von Microsoft (wobei „ANSI“ früher offenbar so etwas wie die aktuell ausgewählte Codepage bedeutete).
Gibt es einen Standard, den ich übersehen habe? Oder liegt in Joels Blog einfach nur (keuch) ein Fehler vor?
Antwort1
Dies ist ein Rätsel, also lasst uns alle bekannten Fakten zusammentragen. Wir suchen nach:
- Ein ANSI-Standard
- Informationen zu Zeichensätzen
- Welche die ersten 128 Codepunkte spezifiziert
- Und war die Grundlage für Codepages und alle folgenden Standards für Zeichensätze.
Das Ergebnis ist für mich nur eines - die ASCII-Standard. Ich glaube, dies war der erste Standard von ANSI, der die ersten 128 Codepunkte spezifizierte, und tatsächlich auch der letzte.
Obwohl sich ASCII später im Detail weiterentwickelte, begann seine Hauptentwicklung 1963. Dieser Standard wurde vom amerikanischen Zweig der Internationalen Organisation für Normung (ISO), ANSI, entwickelt. Da dieser Standard keine Verweise auf nicht-amerikanische Zeichen enthielt und die darauf folgenden Codepages, die diese Frage zu beantworten versuchten, ein echtes Durcheinander waren und man sich nur auf den ASCII-Teil einigen konnte, wurde die Standardisierungsarbeit von der internationalen Organisation ISO selbst übernommen.
Historisch betrachtet ist die Norm ISO/IEC 8859 Zwischen ASCII und den Codepages kam es zu einer Umgestaltung, allerdings handelte es sich hierbei nicht um einen ANSI-Standard, sondern dieser wurde von der ISO ausgearbeitet.
"ANSI-Codepages" war eine falsche Bezeichnung für Windows-Codepagesdie von Microsoft und nicht von ANSI erstellt wurden. Eine Variante war die Codepage von Windows-1252, die später bekannt wurde als ISO/IEC 8859-1.
Die eigentliche Geschichte der Zeichensätze ist ziemlich verworren, und es bedarf umfangreicher Detektivarbeit, um Zeittabellen, gegenseitige Einflüsse und daraus resultierende De-facto-Standards oder Definitionen zu ermitteln. Aber alles begann mit ASCII, das die Grundlage für alle zukünftigen Entwicklungen schuf, die in Unicode und UTF-8 gipfelten.
Antwort2
Entsprechendihre Wikipedia-SeiteDie Steuerzeichen C0 und C1 sind in ANSI x3.4 definiert.
Hierzu zählen die Escape-Sequenzen für erweiterte Textformatierungen, die verwendet werden vonISO 2022UndISO 8859um mehrbyteige internationale Zeichensätze zuzulassen.
Beispielsweise wechseln ESC $ @ und ESC $ B zu anderen japanischen 2-Byte-Kodierungen, während ESC ( B zurück zu US-ASCII wechselt. Dies könnten ISO- (oder ECMA-)Standards sein, sie verwenden jedoch die ANSI-Steuercodes, sodass es sich wahrscheinlich teilweise um eine falsche Bezeichnung handelt.
Antwort3
Ohne Input von Joel können wir es nicht mit Sicherheit wissen, aber basierend auf den anderen Antwortversuchen hier und den Mängeln, die ich bei ihnen erkenne, möchte ich eine meiner Meinung nach offensichtliche und einfache Spekulation vorbringen:
Es gibt hier keinen wirklichen ANSI-Standard, und Joel beschönigt die Dinge.
Was hier genau zusammengefasst und möglicherweise vermischt wird, ist definitiv weniger sicher, aber ich würde vermuten, dass er über die Entwicklung von Windows-Codepages spricht, die von Microsoft eine Zeit lang „ANSI-Codepages“ genannt wurden, obwohl es nie eine konkrete Verbindung zum American National Standards Institute gab, möglicherweise abgesehen von einem letztlich erfolglosen Versuch, die Windows-Codepage 1252 als „erweitertes ASCII“ mit verschiedenen Akzentzeichen für einige westeuropäische Sprachen und Symbolen, die für den Schriftsatz und einfache mathematische Ausdrücke nützlich sind, zu standardisieren. Laut einigen Quellen führte dies letztendlich zuISO/IEC 8859-1und schließlich die größere Familie vonISO 8859Standards für 8-Bit-Zeichensätze für verschiedene Regionen (siehe auchECMA-94).
Fürs Protokoll: Die ASA und dannANSI-Komitee X3war verantwortlich für den ASCII-Standard (ASA X3.4, dann ANSI X3.4, dann ISO 646) sowie den X3.64-Standard für ASCII-Bildschirmsteuerungssequenzen für Anzeigeterminals. Zu den bemerkenswerten Veröffentlichungen dieses Komitees in den späten 1980er Jahren gehören ein Vorschlag für die Sprache C und etwas namens „Extended Pascal“ sowie die SCSI-Hardwareschnittstelle, aber ich konnte nichts über Zeichensätze aus dieser Zeit finden.
Antwort4
https://en.wikipedia.org/wiki/ASCII#History
Laut dieser Liste war ANSI X3.4-1977 der erste ANSI-Standard, der ASCII definierte.