|
Zeichensätze (character codes) stellen die Zuordnung
zwischen Bitmustern und den Namen von Zeichen dar. Rechts eine Demonstration der ASCII-Zeichen: |
|
Standards
|
Chancen ohne Monopole ! |
| Auf dieser Seite: | |
| Bit-Muster & Daten | Bits, Nibbles, Bytes werden mit Vereinbarungen zu Daten |
| Verweis-Tabelle | Vereinbarung zur Interpretation von Bit-Mustern |
| Zeichensatz | Verweis-Tabelle zur Definition von Text-Symbolen (Zeichen) |
| ASCII | Der weltweit wichtigste Minimal-Zeichensatz |
| Unicode | Stand der Technik: 2 Millionen weltweit eindeutige Zeichen. |
| Geschichte | Von 10 Dezimalziffern zu Zeichen für die ganze Welt |
| Umschalt-Code | Ein Trick scheint mehr Zeichen als möglich zu codieren |
| Die wichtigsten Zeichencodes im Detail: | |
| ASCII | Grundlage der meisten IT-Zeichencodes |
| ISO-8859 | Zeichensatz-Familie, u.a. Latin-1 |
| EBCDIC | Ein eigener Weg von IBM |
| Unicode | Modernste Norm für >2 Millionen Zeichen und Symbole |
| UTF | Darstellung von Unicode-Zeichen in der Informatik-Praxis, z.B. UTF-8 |
| Exoten | Hersteller-spezifische Varianten: LICS, MacRoman, Windows-1250,... |
| Zeichencodes in der IT-Entwicklung | |
| Programmierung | Zeichen in C++, Javascript, Perl, PHP, SQL, VBA, ... |
| Maskierung | Darstellung reservierter Zeichen |
| HTML | Vereinbarung eines Zeichensatzes |
| URI | Codierung der URI-Adresszeile und der optionalen Argumente |
| Links |
Ausgewählte
|
| Schrift (Font) | |
| Schrift-Größe | Typografische Einheiten in Theorie und Praxis, mit Live-Berechnung |
| Schrift-Familie | Bestimmt Aussehen und Charakter einer Schrift |
Bits, Nibbles, Bytes und Daten |
|
Bit▲ 1 Bit ist die kleinste 'digitale' Informations-Einheit, vergleichbar mit einem Ein-Aus-Schalter:• 1 Bit kann nur 2 verschiedene Werte annehmen, die keine festgelegten Namen haben: Man kann die beiden Werte mit den Zahlen 0 und 1 bezeichnen, oder mit Worten (falsch/wahr oder false/true) oder mit Zeichen (F/T, ↑/↓, ◄/►, ●/●) oder auf andere Weise, z.B. mit Tönen, Farben, usw. |
• Man kann den beiden Werten auch eine beliebige Bedeutung zuordnen, z.B. aus/ein, vor/zurück, rechts/links, weiß/schwarz, ..., ... • Wenn man mehr als 2 Bedeutungen verwalten will, muss man mehrere Bits verwenden. Ein (Digital)-Computer kann sehr viele Bits verwalten, daher verwendet man in der Praxis meist größere Einheiten, z.B. ↓ Nibbles, Bytes oder Vielfache von Bytes. |
Nibble▲ 1 Nibble ist eine Informations-Einheit aus 4 Bits. Diese Einheit wird selten verwendet, ist jedoch anschaulich: Ebenso wie eine Einheit aus 4 Schaltern kann ein Nibble 24=16 verschiedene Werte annehmen.• Wenn man die 4 Bits eines Nibble mit den Binär-Zahlen 0/1 bezeichnet, dann sind diese 16 Werte:
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 • Man kann alle 4 Bits eines Nibble zu einer Dezimal-Zahl zusammenfassen. In diesem Fall kann man die 16 verschiedenen Werte so angeben: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
(In der Informatik beginnt man meist mit 0 zu zählen). |
• Alternativ kann man die 4 Bits eines Nibble zu einer Hexadezimal-Zahl zusammenfassen: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Diese Darstellung wird in der Informatik besonders oft verwendet, weil man dazu nur
genau eine Hex-Ziffer braucht. Man kann für die Werte beliebige Symbole (Zeichen)
verwenden, es haben sich jedoch für die Werte 0...9 die
Dezimal-Ziffern und für die Werte 10...15 die
Buchstaben A...F durchgesetzt.• Ein Computer verwaltet digitale Daten nach den dazu angegebenen Regeln, kennt jedoch nicht die Bedeutung. Man kann jedem der 16 Werte eine beliebige Bedeutung zuordnen, z.B. 16 verschiedene Töne oder Farben: (Diesen 16 Farben hat man den Namen → VGA-Farben gegeben). |
Byte▲ 1 Byte ist eine Informations-Einheit aus 8 Bits.Ein Byte ist die kleinste Einheit, die ein Computer adressieren kann: Ein PC muss aus einem Speicher oder von einer Datei mindestens 1 Byte lesen - auch dann, wenn er davon nur 1 Bit braucht. Das gilt derzeit für alle PC-Daten, d.h. Speicher, Dateien, Transport usw. erfolgt stets in Bytes, d.h. in ganzen Vielfachen von 8 Bit. • 1 Byte kann 28=256 verschiedene Werte annehmen, die man z.B. binär bezeichnen kann:
0000 0000, 0000 0001,
Zur besseren Lesbarkeit fügt man meist nach 4 Bit (1 Nibble)
ein Leerzeichen ein. Von den 256 verschiedenen Werten eines Byte sind hier
nur die beiden ersten und die beiden letzten angegeben..... ...., .... ...., 1111 1110, 1111 1111 • Dezimale Darstellung der 256 Werte eines Byte: 0, 1, ... ... 254, 255
• Hexadezimale Darstellung: 00, 01, ... ... FE, FF
Diese Darstellung wird in der Informatik bevorzugt, weil man jedes Byte
mit genau 2 Hex-Ziffern angeben kann.
|
• Für Vielfache der Einheit Byte verwendet man Vorsilben, ähnlich wie für andere Einheiten. Digitale Computer sind jedoch intern nicht im Dezimal-System sondern im Binär-System organisiert. Die Vielfachen von Bytes sind daher nicht in Schritten von 1000 sondern in Schritten von 210=1024 organisiert. Das wird durch ein Zeichen i nach der Vorsilbe bezeichnet, z.B.
1 kiB = 1024 Byte = 1.024E+03 Byte
1 MiB = 1024 kiB = 1.049E+06 Byte 1 GiB = 1024 MiB = 1.074E+09 Byte 1 TiB = 1024 GiB = 1.100E+12 Byte • Man kann jedem der 256 Werte eine beliebige Bedeutung zuordnen, z.B. mit einer ↓ Verweis-Tabelle. Das ist besonders wichtig, denn nur in diesem Fall werden aus bedeutungslosen Bit-Mustern Daten.
Damit man mit den Bytes eines PC etwas anfangen kann, braucht man daher stets
(zusätzlich) eine Vereinbarung, welche die Bit-Muster mit der
jeweiligen Bedeutung verknüpft. Es gibt dazu unendlich viele Möglichkeiten,
aus praktischen Gründen hat man jedoch einige der wichtigsten Vereinbarungen in
Standards festgelegt.
Ein Zeichensatz (Character Code) ist eine Vereinbarung, welche eine Anzahl
verschiedener Bit-Muster mit Symbolen (Zeichen) verknüpft, z.B. mit
Buchstaben, Ziffern und anderen Symbolen (Zeichen).
|
Verweis-Tabelle (Lookup Table) |
|||||||||||||||||||||||||||||||||||||
AlgorithmusEs gibt 2 verschiedene Möglichkeiten, um ein Bitmuster mit einer Bedeutung zu verknüpfen:
•
Man kann dazu 'Regeln' (Algorithmen) aufstellen,
z.B. in Form von mathematischen Gleichungen.
• Man kann in einer Tabelle (↓ Verweis-Tabelle) jedem Bitmuster eine individuelle Bedeutung zuordnen. Rechts einige Beispiele für solche Algorithmen: |
Beispiele für Algorithmen sind u.a.
die Variablen-Typen (der Programmiersprachen): • Typ 'Unsigned Integer': Den Bitmustern 00...FF eines Bytes werden die ganzen Dezimalzahlen 0...255 zugeordnet. • Typ 'Signed Integer': Den Bitmustern 00...FF eines Bytes werden die ganzen Dezimalzahlen -128...+127 zugeordnet. In der Praxis verwendet man dazu allerdings nicht nur 1 Byte sondern meist 4 Bytes. • Gleitkomma-Zahlen (z.B. pi=3.141592) werden nach einem anderen → Standard-Algorithmus (IEEE-754) in Bitmuster umgewandelt und umgekehrt. |
||||||||||||||||||||||||||||||||||||
Verweis-TabelleMit einer 2spaltigen Tabelle kann man Beziehungen zwischen Bitmustern und beliebigen Bedeutungen herstellen.● Eine Verweis-Tabelle (Lookup Table) sollte 'umkehrbar eindeutig' sein. Das bedeutet: Jedes Muster und jede Bedeutung darf in der jeweiligen Spalte nur genau 1mal vorkommen. Das ist nicht zwingend, vereinfacht jedoch die praktische Anwendung sehr. ● Die Bitmuster-Spalte muss nicht vollständig sein, d.h. die Tabelle kann auch weniger als 256 Zeilen haben: In diesem Fall haben alle nicht verwendeten Bitmuster 'keine' oder 'unbestimmte' Bedeutung. Das wird in der Informatik meist mit dem Wert NULL bezeichnet (zu unterscheiden von der Zahl 0). ● Die verwendeten Bitmuster müssen nicht mit 0000 0000 beginnen und nicht mit 1111 1111 enden. ● In den meisten Beispielen ist die Verweis-Tabelle nach Bitmuster geordnet. Das ist allerdings nicht zwingend. ● Für mehr als 256 verschiedene Bedeutungen braucht man 2 oder mehr Bytes. 2 Bytes können allerdings schon 216=65536 verschiedene Bitmuster darstellen, daher verwenden nur wenige Verweis-Tabellen mehr als 2 Byte. |
Beispiel: Verweis-Tabelle zur Verknüpfung von Bitmustern mit bestimmten Symbolen (Großbuchstaben):
Eine Verweis-Tabelle ist willkürlich angeordnet: Es gibt ca. 1062 verschiedene Möglichkeiten, die 26 Großbuchstaben mit Bitmustern eines Bytes zu verknüpfen. Zum Austausch von Daten zwischen verschiedenen Programmen und zwischen verschiedenen PC ist es daher sinnvoll, sich auf bestimmte Verweis-Tabellen zu einigen, d.h. auf anerkannte Standards. |
||||||||||||||||||||||||||||||||||||
Zeichensatz (Character Code) |
|
ZeichensatzEine ↑ Verweis-Tabelle zur Verknüpfung von Bitmustern und Symbolen (Zeichen) nennt man Zeichensatz (Character Code).● In der Informatik gibt es aus historischen Gründen mehrere Verweis-Tabellen für Symbole, z.B. ↓ ASCII, die 16 verschiedenen → ISO-8859-Codes, ↓ Unicode und andere. ● Daher genügt es nicht, als Vereinbarung zur Interpretation eines Bitmusters den Typ 'Zeichen' (Character) anzugeben: Man muss zusätzlich den verwendeten Zeichensatz angeben. Alle Dateien, in denen Text verwendet wird, enthalten daher (meist am Anfang) die Vereinbarung des verwendeten Zeichensatzes. Beispiel: In der 1. Zeile fast aller Seiten dieses Webs ist der → Unicode-Zeichensatz (UTF-8) vereinbart. |
● Für manche Anwendungen gilt ein bestimmter Zeichensatz auch ohne ausdrückliche Angabe als vereinbart. Beispiel: Für den Quelltext aller Programmiersprachen gilt der ↓ ASCII-Zeichensatz als vereinbart. Sie sollten daher bei der Programmierung niemals die deutschen Sonderzeichen ÄÖÜäöüß oder das €-Zeichen verwenden, die in diesem Zeichensatz nicht angegeben sind. Beispiel: Wenn man in Webseiten einen 'deutschen' Zeichensatz verwendet (z.B. ISO-8859-1, CP-1252), dann werden die Umlaute oft nicht nur im anders-sprachigen Ausland sondern auch an vielen PC im eigenen Land falsch dargestellt. |
Symbol-AnzahlEine Verweis-Tabelle muss für jede zu vereinbarende Bedeutung genau eine Zeile enthalten. Das bedeutet für Symbole (Zeichen):• Eine Zeichensatz-Tabelle muss für jedes darzustellenden Zeichen eine Zeile enthalten, z.B. für Buchstaben A..Z, a..z, Ziffern 0..9 sowie Interpunktionen und sonstige Zeichen wie ([[{.,:;+-!?%}]) Die Anzahl der darzustellenden Zeichen hat sich historisch am Bedarf und an den technischen Möglichkeiten orientiert: Ein Zeichensatz soll zumindest die wichtigsten benötigten Zeichen definieren, jedoch nur so viele Zeilen umfassen wie unbedingt nötig, damit man zur Verwaltung der Zeichen so wenig Speicherplatz wie möglich braucht. |
Entwicklung des Bedarfs an Zeichen (Symbolen): • Die lateinischen Buchstaben werden weltweit am häufigsten verwendet. • Darüber hinaus braucht man für die meisten Sprachen einige Sonderzeichen, wie z.B. die deutschen ÄÖÜäöüß • Die Praxis erfordert zusätzlich einige Zeichen, z.B. Leerzeichen (Space, Blank), Tabulator (TAB, HT), Neue Zeile (New Line NL), Neue Seite (Vertical Tabulator, VT), Schritt zurück (Backspace BS) 'Wagenrücklauf' (nach links zum Zeilen-Anfang, Carriage Return, CR), Löschen (Delete DEL) usw. • In Asien wurde die Informatik erst später eingeführt, nicht zuletzt wegen der sehr großen Anzahl der darzustellenden Zeichen asiatischer Sprachen. |
Bit-AnzahlDiese Formeln berechnen die Anzahl der mit vorgegebenen Bits oder Bytes darstellbaren Symbole bzw. umgekehrt die Anzahl der für eine bestimmte Anzahl von Symbolen notwendigen Bits und Bytes:
Anzahl(Symbole) = 2^Anzahl(Bits)
Für die Potenzierung wird diese Darstellung verwendet:
Anzahl(Symbole) = 2^(Anzahl(Bytes)*8) Anzahl(Bits) = Aufrunden(ln(Anzahl(Symbole))/ln(2)) Anzahl(Bytes) = Aufrunden(ln(Anzahl(Symbole))/(8*ln(2))) xy == x^y
♦ Details zum
Runden,
(hier: Aufrunden) von Gleitkomma-Zahlen und zum
Natürlichen Logarithmus ln() ● Nur der ↓ ASCII-Zeichensatz verwendet mit 7 Bit für 128 Zeichen weniger als 1 Byte. Zum Speichern von ASCII-Zeichen braucht man trotzdem je 1 Byte. |
● Die meisten Zeichensätze verwenden 1 Byte pro Zeichen und können damit 255 verschiedene Zeichen codieren. Davon entfallen meist die ersten 128 Zeichen auf die darin enthaltenen ASCII-Zeichen, weitere 32 auf Steuerzeichen, d.h. es bleiben für Sonderzeichen der jeweiligen Sprache(n) nur 96 Zeichen. Das genügt für den lokalen Bedarf der wichtigsten europäischen und amerikanischen Sprachen. Es reicht jedoch bei weitem nicht aus, um in einem einzigen Zeichensatz die Sonderzeichen aller genannten Regionen zu vereinigen. Jeder Versuch, auch die Zeichen der asiatischen Sprachen mit 1 Byte zu codieren, ist aussichtslos. Wenn man einen 1-Byte Zeichensatz verwendet, dann kann ein Sonderzeichen in anderen Ländern andere Bedeutungen annehmen ! Der einzige Ausweg ist die Verwendung mehrerer Bytes, z.B. mit ↓ Unicode. |
Schrift-FamilieEin Zeichensatz definiert zwar ein Zeichen eindeutig (d.h. mit seinem Namen), gibt jedoch keine Angaben über die Darstellung.Je nach → Schrift-Familie (Font family), Schnitt, Größe, Farbe und Richtung kann daher das gleiche Zeichen (hier das Bitmuster 1000001 oder hex #41 oder dezimal 65. mit dem Unicode-Namen latin capital letter A ) durchaus unterschiedlich aussehen: |
|
ASCII - Zeichensatz |
|
|
●
Der → ASCII-Code
(American Standard Code for Information Interchange) stellt die Zeichen-Grundlage
der meisten Informatik-Gebiete dar (z.B. Programmiersprachen). ● Der ASCII-Code ist identisch mit dem ↓ Unicode-(Teil)-Zeichensatz U0000. |
●
Die 128 Zeichen dieses Code sind als fixer Bestandteil in den meisten
anderen Zeichen-Codes enthalten. ● Der ASCII-Code umfasst nur die Zeichen 0..127 (#00..7F). Alle darüber hinausgehenden Codes sind nicht Teil des ASCII-Standards. |
|
Zeichensätze werden meist in Form einer 2dimensionalen Tabelle dargestellt: • Die hexadezimale CodeNummer ergibt sich aus 1.Spalte * 16 + 1.Zeile. • Wenn sie den MausZeiger über die Tabelle bewegen, dann wird das ausgewählte Symbol darunter angezeigt: Links in der Unicode-Schreibweise (CodePoint), in der Mitte als Symbol, rechts dezimal (zur Kennzeichnung mit DezimalPunkt) und hexadezimal (Bezeichnung mit #). • Nicht druckbare Steuerzeichen sind gelb unterlegt. |
|
| ♦ Details zum ASCII-Code | |
Unicode und UTF |
|||||||||||||||||||||||||||||||||||||||||||
1-Byte Zeichensätze● In der Anfangszeit der Computer-Informatik war der Speicherplatz knapp und es war kaum vorstellbar, für 1 Zeichen mehr als 1 Byte zu verwenden. Außerdem war der Vorrat an Zeichen für den eigenen Bedarf ausreichend, insbesondere weil vorwiegend Englisch verwendet wurde.Erst mit der raschen Ausbreitung der Netzwerk- und Kommunikations-Technik, insbesondere des Internet, stellte sich folgendes Problem: ● Die für nationale Sonderzeichen verwendeten Bitmuster ergeben je nach Zeichensatz eine unterschiedliche Bedeutung. |
Das erfordert einen hohen Verwaltungs-Aufwand: Jeder PC muss eine große Anzahl von Verweis-Tabellen für die vielen 1-Byte-Zeichensätze verwalten. Alle Programme, die mit Text zu tun haben (praktisch alle AnwenderInnen-Programme) müssen damit umgehen, d.h. den Zeichensatz erkennen, allenfalls sogar umwandeln, und den Text korrekt darstellen. Mit zunehmender Globalisierung kommt den Problemen der 1-Byte-Zeichensätze immer mehr Gewicht zu. Andererseits wird die Lösung einfacher: Moderne PC bieten um viele Größenordnungen mehr an Speicherplatz, als man sich in den Anfängen der Informatik erträumen konnte. ♦ Details zu den wichtigsten 1-Byte Zeichensätzen: ISO-8859 |
||||||||||||||||||||||||||||||||||||||||||
UnicodeDer → Unicode-Zeichensatz löst die Probleme der (mit Ausnahme von ↑ ASCII) veralteten 1-Byte-Zeichensätze:• Unicode vereinigt alle weltweit verwendeten Symbole in einer einzigen (sehr großen) Verweis-Tabelle. Unicode ist derzeit für 21 Bit definiert und kann damit ca. 221 ≈ 2 Mio Symbole definieren. • Nur im Unicode-Zeichensatz ist jedes Zeichen mit einem weltweit eindeutigen Bitmuster codiert. Jeder PC kann die Zeichen garantiert richtig darstellen, unabhängig von Betriebssystem, Sprache oder Programm. 文
•
Wenn dieses chinesische Zeichen (Unicode U+6587) angezeigt wird, dann versteht
ihr Betriebssystem, Browser und die verwendete Schrift-Familie bereits die
wichtigsten Unicode-Zeichen. Sie können es kopieren und in andere
Programme als Text-Zeichen einfügen.
|
• Nur mit Unicode ist es möglich, in einem Text beliebige Zeichen mehrerer Sprachen zu mischen, z.B. diese Städte-Namen: |
||||||||||||||||||||||||||||||||||||||||||
UTFUnicode-Zeichen werden in der Praxis nicht mit 21 Bit dargestellt: Zur Verwaltung (Speichern, Transport) verwendet man spezielle Transformationen (→ UTF).Es gibt mehrere UTF-Standards, aus denen man den jeweils besten Kompromiss zwischen Platzbedarf und Geschwindigkeit wählen kann. Die Verweis-Tabelle erhält (zusätzlich zum Bitmuster und zum Symbol) eine 3.Spalte mit dem Bitmuster des jeweiligen UTF-Standards (Beispiel rechts). Die meist-verwendete Unicode-Transformation ist → UTF-8: • Für die (weltweit meist-verwendeten) 127 ASCII-Zeichen braucht man nur je 1 Byte. • Für weitere 1920 Zeichen braucht man je 2 Byte. Darunter fallen alle deutschen Sonderzeichen (Umlaute), griechische, kyrillische, arabische, hebräische u.a. Zeichen. • Für weitere 63488 Zeichen braucht man je 3 Byte, darunter das €-Zeichen. Bis hierher (insgesamt 216=65536 Zeichen) wird Unicode und UTF-8 von allen gängigen Betriebssystemen und Programmen unterstützt. Die Tabelle rechts zeigt Beispiele für Zeichen mit 1,2,3-Byte UTF-8 Code. • Weitere ca. 2 Mio Zeichen kann man mit je 4 Byte codieren. Das wird jedoch noch nicht von jeder Software unterstützt. |
Ausschnitt aus der UTF-8 Verweis-Tabelle:
Die beiden Bitmuster-Spalten werden vereinfacht durch ihre äquivalenten Hexadezimal-Zahlen angegeben. ► Häufig verwendete Zeichen brauchen viel weniger Platz als die 21 Bit der Unicode-Definition, selten verwendete Zeichen dafür mehr als 21 Bit. • Schrift-Familie: Die meisten Schriften enthalten nur wenige Zeichen, oft nicht einmal die deutschen Umlaute. Um ein Zeichen korrekt anzuzeigen, muss es in der verwendeten Schrift-Familie angelegt sein. (♦ Details). |
||||||||||||||||||||||||||||||||||||||||||
| ♦ Details zu Unicode, UTF, UTF-8 | |||||||||||||||||||||||||||||||||||||||||||
Geschichte der Zeichensätze |
|
|
Die Grund-Idee von Zeichen-Codes ist uralt: Ich sende ein Signal - Du empfängst es und erkennst, was es bedeutet. |
Alle Naturvölker haben Symbole entwickelt, um Nachrichten zu übertragen, z.B. auf Sicht- oder Hörweite. |
| Die Elektrizität machte es erstmals möglich, Signale rasch über große Entfernungen zu übertragen. Wegen der unvermeidlichen Störungen war es notwendig, Daten in der einfachsten möglichen Form zu codieren: Mit den beiden Sigalen Ein und Aus, d.h. im Binärsystem. |
Der amerikanische Kunst-Professor (!)
Samuel Morse erfand 1837 einen Apparat zur Übertragung solcher
binärer Signale über Draht-Leitungen. Dazu entwickelte er auch die
Software, den →
Morse-Code: Jedem Zeichen wurde ein eindeutiges Muster von Signalen und
dazwischen liegenden Pausen zugeordnet.
|
| Der Morse-Code umfasste in der Urform nur die 10 dezimalen Ziffern. Mit Hilfe von Tabellen (lookup-tables) wurden Buchstaben zu Ziffern-Kombinationen codiert und decodiert. | Der Code wurde weiterentwickelt und umfasste bald auch Buchstaben und Interpunktion. Der Morse-Code wurde 1865 international standardisiert. Er wird bis heute verwendet: 2004 wurde sogar das @ Zeichen ergänzt. In Notsituationen (Klopf- oder Lichtzeichen) ist dieser Code nach wie vor sehr nützlich. |
Émile Baudot entwickelte 1870 einen Telegrafen mit einfacher
Tastatur und dazu die Software - den Baudot-Code
mit 5 Bit für 25=32 mögliche Zeichen.Der Telegraf erlaubte die maschinelle Codierung / Decodierung der Zeichen und war damit schneller und zuverlässiger als menschliches Morse-Personal. |
Ein eigener →
Umschalt-Code erlaubte die Darstellung von insgesamt 58 Zeichen,
ausreichend für Buchstaben und Ziffern. Der Baudot-Code wurde als CCITT-1 international genormt. |
| Donald Murray verbesserte 1901 den Baudot-Code und führte Steuerzeichen ein: Das sind eigene Zeichen zur Kontrolle der Kommunikation (z.B. 'Glocke läuten') und der Formatierung (z.B. 'neue Zeile'). | Der weiterentwickelte Code wurde 1932 als CCITT-2 international standardisiert und weltweit in Telex-Netzwerken verwendet. |
| Der nächste Schritt war die Erweiterung auf 7 Bit (128 Zeichen). Damit konnte man Buchstaben, Ziffern, alle (in den USA) üblichen Zeichen (z.B. $ ) und Steuerzeichen darstellen. | Das kommerzielle Computer-Zentrum waren die USA, daher wurde der Code ohne internationale Rücksicht als ASCII (American Standard Code for Information Interchange) definiert. Die 128 Zeichen des → ASCII-Code sind noch heute Grundbestandteil der gesamten IT-Welt, z.B. auch des Internet. |
| Der ASCII-Code belegt in einem 8-Bit PC-Wort nur 7 Bit und damit nur die Hälfte aller verfügbaren Zeichen. Die verbleibenden 128 Zeichen wurden willkürlich vergeben, dem Bedarf und dem jeweiligen politischen Ansehen einer Sprache entsprechend. Das führte zu einem chaotischen System in vielen verschiedenen Varianten, z.B. → DOS-Code oder Codepage 437. |
Der → DOS-Code wird heute
nur mehr von
→ Konsolen-Programmen benutzt. Die (gegenüber ASCII) zusätzlichen
128 Zeichen haben heute keine Bedeutung, ausgenommen einige Sonderzeichen (z.B.
äöüÄÖÜß
für den deutschen Sprachraum). ♦ Details zum Thema ASCII & DOS |
|
Computer wurden überraschend auch in anderen Ländern als den USA verwendet.
Dort blieb zunächst keine andere Möglichkeit, als die jeweils benötigten
Sonderzeichen in den 'oberen' 128 Zeichen von 8-Bit Worten unterzubringen. Je nach Sprachraum entstanden daher Varianten, die jeweils aus einem konstanten Teil (die 128 'unteren' ASCII-Zeichen) und variablen 128 'oberen' Zeichen bestehen. Diese Codes (Zeichensätze) wurden unter der Standard-Familie → ISO-8859 standardisiert und werden noch immer häufig verwendet.. ♦ Details zum Zeichen-Standard ISO-8859. |
Beispiele:
•
ISO 8859-1 für westeuropäische
Sprachen. Enthält z.B. die deutschen Sonderzeichen
äöüÄÖÜß, aber auch
áàâãåæ ...• Vorsicht: Microsoft-Programme bevorzugen ohne besondere Einstellung meist abweichende, z.T. firmen-eigene Standards (z.B. CP-125*). • Die meisten europäischen Webseiten sind mit ISO-8859-1 codiert, wie man aus deren Quelltext entnehmen kann:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
• Weitere Teile von ISO-8859 enthalten Zeichen für andere Schrift-Regionen, z.B. ISO 8859-5 für cyrillische Schrift, Бгджл ► Um ein Zeichen eindeutig zu identifizieren, ist zusätzlich zum Code die Angabe des verwendeten Zeichensatzes notwendig ! |
|
Der nächste Schritt war logisch: Ein Zeichen muss weltweit eindeutig mit einem
einzigen Code bezeichnet werden. Außerdem müssen auch Sprachen aufgenommen werden, die mehr als 128 nicht-lateinische Zeichen benötigen. |
Das bedeutet den endgültigen Abschied von 8-Bit Codes, was jedoch angesichts der heute verfügbaren 64-Bit-PC kein großes Wagnis ist. |
|
Unicode
(ISO-10646) ist der derzeit modernste Standard zur weltweit eindeutigen Codierung
von Zeichen. Zunächst waren dafür 16-Bit Codes (65536 mögliche Zeichen) vorgesehen. 2001 wurden zu den damals bestehenden ca. 50000 Zeichen weitere ca. 45000 Zeichen aufgenommen: Das war nur mit einer weiteren Code-Verbreiterung möglich: Heute wird Unicode mit 21-Bit definiert und bietet damit Platz für mehr als 2 Millionen Zeichen. Das sollte für einige Jahre reichen. Da die meisten Bereiche der IT derzeit nicht mit 21-Bit-Zeichen arbeiten (können), wurde mit den → UTF-Algorithmen die Möglichkeit geschaffen, Unicode-Zeichen mit fast beliebiger Wortbreite (5,7,8,16,32 Bit) darzustellen. ♣ Es ist ein verbreitetes Mißverständnis, dass Unicode (UTF-8) wesentlich mehr Speicherplatz erfordert: Alle im ASCII-Code enthaltenen Zeichen brauchen weiterhin nur 1 Byte, lediglich die 7 Sonderzeichen äöüÄÖÜß brauchen je 2 Byte, sind dafür jedoch weltweit (!) eindeutig codiert. |
Mit dem Sprung von 16-Bit auf 21-Bit ist kein Problem verbunden, da alle 16-Bit
Zeichen (mit 5 führenden Null-Bits) im 21-Bit Unicode enthalten sind. • Aktuelle Betriebssysteme und Programme verstehen bereits Unicode, sind aber noch nicht dafür optimiert. Es wird noch Jahre brauchen, bis alle wesentlichen IT-Bereiche die internationalen Unicode-Zeichen verwenden • Moderne Software verwendet ausschließlich Unicode. Mit UTF codierte Daten lassen sich weltweit von allen Systemen und Programmen eindeutig lesen. Alle Seiten dieses Webs sind mit z.B. Unicode (UTF-8) codiert. • Leider wird manchmal noch immer die Verwendung eines nationalen Zeichencodes (z.B. ISO-8859-1 bzw. Latin-1) empfohlen. Das ist im heutigen Europa blanker Unsinn, da man damit nicht einmal die Namen jener EU-Bürger richtig schreiben kann, die in Polen, Slowakei, Tschechei, Bulgarien oder Griechenland leben... ♦ Details zum Thema Unicode |
Umschalt-Code |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Wenn man mehr Zeichen darstellen will, als die Wortbreite (Bit-Anzahl) eines Codes erlaubt,
dann kann man sich mit einem Trick helfen: Die zusätzlich notwendigen Daten werden
in Form von 'Umschalt-Codes' (Shift) hintereinander geschaltet.
Dieser Trick wird schon seit der Frühzeit der Code-Geschichte verwendet. Einige der Code-Elemente (points) werden z.B. an eigene Code-Steuerzeichen vergeben. Je nach Steuerzeichen werden die nachfolgenden Zeichen nach unterschiedlichen Tabellen codiert / decodiert. Rechts ein Beispiel, wie man 39 Zeichen mit einem 4-Bit Code darstellen könnte: ► Ein 4-Bit Code (erste Spalte) kann 16 verschiedene Werte annehmen. ► Die Zeichen werden in 3 Codier-Tabellen (Tab1,Tab2,Tab3) angeordnet. ► In jeder Tabelle werden 3 Positionen (points) von den Umschalt-Codes (U1,U2,U3) besetzt. ► Nach Einfüllen von lateinischen Buchstaben und Dezimalziffern bleiben noch 3 Positionen (Tab3, Code 10..12) für weitere Zeichen. Die Codierung des Wortes "TEST" würde dann so aussehen: In Zeichen-Darstellung: (U2),T,(U1),E,(U2),S,T oder als Dezimalzahlen: 14, 6, 13, 4, 14, 5, 6 |
Beispiel: Tabelle zur Codierung von max. 39 Zeichen mit einem 4-Bit Code:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ● Für noch mehr Zeichen kann man eine weitere Tabelle (Tab4) verwenden, allerdings um den Preis eines weiteren Umschalt-Codes U4. Dann kann jede Tabelle nur noch 12 Zeichen codieren, das ergibt insgesamt 48 darstellbare Zeichen. |
●
Das Umschalt-Verfahren wird mit steigender Zahl an Tabellen immer weniger effizient: Mit 8 Tabellen könnte man in einem 4-Bit-Code max. 64 Zeichen darstellen. Noch mehr Tabellen würden die Zahl möglicher Zeichen wieder verringern. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Beispiel
Die >2 Mio →
Unicode-Zeichen von je 21 Bit Länge werden mit den
→ UTF-Algorithmen in
kleineren 'Worten' dargestellt, z.B. mit
→ UTF-8
in 1..4 Byte zu je 8 Bit.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Um 1975 wurde ein Standard zur Umschaltung zwischen verschiedenen Zeichensätzen entwickelt. Er verwendet spezielle Zeichenfolgen (Escape Sequenzen) zur Umschaltung aller nachfolgenden Zeichen. | Die aktuelle Version dieses Standards finden sie unter ECMA-35. Dieser Standard ist seit 1994 identisch mit ISO-2022. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Die gute alte Schreibmaschine verwendet eine eigene Umschalt-(Shift)-Taste, um zwischen Tabellen für große und kleine Buchstaben zu wählen. | Das Verfahren wurde auf PC-Tastaturen übernommen. Zusätzlich zur Shift-Taste stehen dort weitere Umschalt-Tasten) Alt, Control, ..) zur Verfügung. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Von hier wird lediglich ein Link zu diesem Thema führen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
IANA:
Character Sets (Liste aller Zeichensätze) UNICODE - Home Page ITU - International Telecommunication Union (früher CCITT) W3C - Character Sets & Encodings (Tutorial), I18N Topic Index, ANSI - American National Standards Institute RFC 1345: Character Mnemonics & Character Sets |
Wikipedia:
ASCII,
Baudot,
Codepage 437 (IBM-PC),
Morse,
Murray,
Unicode, UTF-7, Univ. Tampere: Characters and encodings |
|
Tronweb:
History of Character Codes Early History of Character Sets |
SelfHTML:
Zeichensatz
(ISO-8859-Familie), Best Business Solutions (BBS): ASCII - ISO 8859-1 (Latin-1) Table |