Unicode

ASCII und ANSI

ASCII ist die Kurzform für American Standard Code for Information Interchange und eine 7-Bit Zeichenkodierung. Sie bildet die Grundlage vieler weiterer Zeichenkodierungen. In ASCII sind 128 Zeichen definiert, davon 95 druckbare und 33 nicht druckbare Zeichen. In der nachfolgenden Tabelle sind die entsprechenden Zeichen und ihre dezimale Schreibweise aufgeführt.

ASCII Tabelle

Wie ersichtlich besteht der Zeichenvorrat von ASCII aus den lateinischen Buchstaben, den zehn arabischen Ziffern sowie einigen Satz- und Steuerzeichen. Die in den meisten Sprachen, die auf das lateinische Alphabet aufbauen, verwendeten diakritischen Zeichen wie Ä oder À sind nicht im ASCII-Bereich vorhanden. Für die Darstellung dieser Zeichen ist mindestens 8 Bit erforderlich, um genügend Speicherplatz zur Kodierung dieser Zeichen zu haben.

Aus diesem Grund wird nahezu immer statt dem 7-Bit ASCII mit dem 8-Bit ANSI gearbeitet, das 256 (8 Bit entspricht 2^8 = 256 Möglichkeiten) verschiedene Zeichen anstatt nur 128 (7 Bit entspricht 2^7 = 128 Möglichkeiten) zulässt. ANSI steht eigentlich für das American National Standards Institute, wird aber in der Computertechnik fast ausschließlich für die nachfolgend erklärte Gruppe von Zeichensätzen verwendet. ANSI ist in der Regel zu den 128 ASCII Zeichen kompatibel und enthält darüber hinaus einige weitere sprachspezifische Zeichen wie beispielsweise Ä, À, ß und so weiter. Je nachdem welche Erweiterung verwendet wird, sind mit den 128 verbleibenden Zeichen andere Zeichen kodiert. Die häufigste ASCII Erweiterung ist in der folgenden Tabelle zu sehen und wird Latin 1 (ISO 8859-1) bezeichnet.

Latin-1 Tabelle

Daneben gibt es auch noch andere Erweiterungen wie beispielsweise Latin 5 (ISO 8859-5, Türkisch), Latin 7 (ISO 8859-7 Keltisch) oder Latin 10 (ISO 8859-10 Südosteuropäisch). Auch bei diesen Erweiterungen sind die ersten 128 Zeichen die normalen ASCII Zeichen. Danach kommen 128 Zeichen, die für die entsprechende Sprache beziehungsweise den entsprechenden Zeichensatz benötigt werden.

Die Kodierung von ANSI benötigt zwar nur ein Byte pro Zeichen und ist damit von allen vorgestellten Kodierungen am effektivsten, dafür geht diese Effizienz auf Kosten der Möglichkeit Zeichen verschiedener Zeichensysteme oder Sonderzeichen in einer Datei zu vereinen. Für normalen englischen oder deutschen Text ist ANSI selbstverständlich ausreichend. Sobald aber auch andere Zeichen wie kyrillische Buchstaben oder spezielle Sonderzeichen im Text vorkommen, kann ANSI diese Zeichen nicht mehr speichern. Hinzu kommt die Inkompatibilität beim Austauschen von Dateien, da es passieren kann dass der Sender als Latin-1 abspeichert und sich der Empfänger die Datei als Latin-10 anschaut und einige Zeichen außerhalb des ASCII Bereichs dementsprechend falsch dargestellt werden, da die selben Codes für Zeichen in Latin-1 und Latin-20 unterschiedlich belegt sind. Um dieser Gefahr auszuweichen, empfiehlt es sich, lieber direkt in einem Sprach-Code unabhängigem Unicode Format wie UTF-7, UTF-8, UTF-16 oder UTF-32 zu speichern. In diesen Kodierungen hat jedes Zeichen einen eindeutigen Code, der wirklich nur dem entsprechenden Zeichen zugeordnet ist.

ANSI oder ASCII haben keine Byte Order Mark (BOM). Eigentlich ist diese nicht nötig, da sowieso pro Zeichen nur ein Byte geschrieben wird und daher die Endianness keine Rolle spielt. Allerdings lässt sich so bei einer Datei nicht eindeutig feststellen, ob es sich bei dieser Datei tatsächlich um eine ASCII oder ANSI Datei handelt, da auch Kodierungen wie UTF-8 nicht zwingend eine BOM haben müssen und es sich bei der entsprechenden Datei so auch um eine eigentlich UTF-8 kodierte Datei handeln könnte.