Zeichensatz / Zeichensätze
Computer und digitale Schaltkreise können nur 0 und 1 speichern und verarbeiten. Deshalb wird jedes Zeichen in einem Bit-Code gespeichert. Der Zeichensatz definiert, welches Zeichen welchem Bit-Code entspricht. Ein Zeichensatz umfasst eine Sammlung von Zeichen zur Darstellung von Zuständen und Werten. Dazu gehören Zahlen, Buchstaben, Umlaute, Satzzeichen, Symbole, Sonderzeichen, Steuerzeichen und Formelzeichen. Es gibt etwa 100 wichtige Zeichen für deren Darstellung 7 Bit (128 Zeichen) ausreichen.
- Buchstaben in Groß- und Kleinschreibung A-Z und a-z (52)
- Ziffern von 0 bis 9 (10)
- Steuer- und Sonderzeichen (65)
US-ASCII
ASCII, American Standard Code for Information Interchange, ist die Mutter aller Zeichensätze und wurde für einen Fernschreiber 1963 entwickelt. ASCII ist eine 7-Bit-Zeichenkodierung und enthält druckbare Zeichen und Steuerzeichen. ASCII entspricht der US-Variante von ISO 646 und dient als Grundlage für spätere auf mehr Bits basierende Kodierungen für Zeichensätze (ISO-8859 und Unicode).
y | x | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||||||||
0000 | NUL | 0 | DLE | 16 | 32 | 0 | 48 | @ | 64 | P | 80 | 96 | p | 112 | |||
0001 | SOH | 1 | DC1 | 17 | ! | 33 | 1 | 49 | A | 65 | Q | 81 | a | 97 | q | 113 | |
0010 | STX | 2 | DC2 | 18 | " | 34 | 2 | 50 | B | 66 | R | 82 | b | 98 | r | 114 | |
0011 | ETX | 3 | DC3 | 19 | # | 35 | 3 | 51 | C | 67 | S | 83 | c | 99 | s | 115 | |
0100 | EOT | 4 | DC4 | 20 | $ | 36 | 4 | 52 | D | 68 | T | 84 | d | 100 | t | 116 | |
0101 | ENQ | 5 | NAK | 21 | % | 37 | 5 | 53 | E | 69 | U | 85 | e | 101 | u | 117 | |
0110 | ACK | 6 | SYN | 22 | & | 38 | 6 | 54 | F | 70 | V | 86 | f | 102 | v | 118 | |
0111 | BEL | 7 | ETB | 23 | ' | 39 | 7 | 55 | G | 71 | W | 87 | g | 103 | w | 119 | |
1000 | BS | 8 | CAN | 24 | ( | 40 | 8 | 56 | H | 72 | X | 88 | h | 104 | x | 120 | |
1001 | HT | 9 | EM | 25 | ) | 41 | 9 | 57 | I | 73 | Y | 89 | i | 105 | y | 121 | |
1010 | LF | 10 | SUB | 26 | * | 42 | : | 58 | J | 74 | Z | 90 | j | 106 | z | 122 | |
1011 | VT | 11 | ESC | 27 | + | 43 | ; | 59 | K | 75 | [ | 91 | k | 107 | { | 123 | |
1100 | FF | 12 | FS | 28 | , | 44 | < | 60 | L | 76 | \ | 92 | l | 108 | | | 124 | |
1101 | CR | 13 | QS | 29 | - | 45 | = | 61 | M | 77 | ] | 93 | m | 109 | } | 125 | |
1110 | SO | 14 | RS | 30 | . | 46 | > | 62 | N | 78 | ^ | 94 | n | 110 | — | 126 | |
1111 | SI | 15 | US | 31 | / | 47 | ? | 63 | O | 79 | _ | 95 | o | 111 | DEL | 127 | |
Steuerzeichen | Schriftzeichen |
. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ~ DEL
Die druckbaren Zeichen von ASCII umfassen das lateinische Alphabet in Groß- und Kleinschreibung, die zehn arabischen Ziffern sowie einige Satzzeichen. Der Zeichenvorrat entspricht weitgehend einer Tastatur oder Schreibmaschine für die englische Sprache. In Computern und anderen elektronischen Geräten, die Text darstellen, wird der Text in der Regel gemäß ASCII oder abwärtskompatibel (ISO 8859-1, Latin-1, Unicode) gespeichert.
Hinweis: Die typische Verarbeitungsbreite sind nicht 7, sondern 8 Bit. Der Grund, warum ASCII nur 7 Bit verwendet, liegt an der ursprünglichen Verwendung für die Datenübertragung. Das 8. Bit wurde als Prüfbit jedem ASCII-Code hinten angestellt. Auf diese Weise hatte man eine einfache Fehlererkennung für die Datenübertragung.
Beispiel: Hallo Welt
Text | H | a | l | l | o | W | e | l | t | |
---|---|---|---|---|---|---|---|---|---|---|
Bitfolge (7 Bit) | 100 1000 | 110 0001 | 110 1100 | 110 1100 | 110 1111 | 010 0000 | 101 0111 | 110 0101 | 110 1100 | 111 0100 |
ASCII-Code (dezimal) | 072 | 097 | 108 | 108 | 111 | 032 | 087 | 101 | 108 | 116 |
ASCII-Code (hex) | 48 | 61 | 6C | 6C | 6F | 20 | 57 | 65 | 6C | 74 |
Im Laufe der Zeit wurde ASCII erweitert. So wurde ASCII zum Beispiel um Umlaute oder Rahmenzeichen erweitert (256 Zeichen mit 8 Bit). Leider kam es nie zu einer einheitlichen Norm. Deshalb kann es beim Austausch von ASCII-Dateien zu seltsamen Darstellungen der Sonderzeichen im Text kommen.
ISO 8859
Die ISO 8859 umfasst 15 verschiedene 8-Bit Zeichensätze, die ASCII als Grundlage haben und für verschiedene Sprachräume um weitere länderspezifische Zeichen erweitert sind. Dabei stimmen die ersten 128 Zeichen (0 bis 127) mit ASCII überein. Die restlichen 128 Zeichen (128 bis 255) werden jeweils anders belegt.
Die ISO-8859-Normen werden von der ISO/IEC nicht mehr aktiv weiterentwickelt. 256 Zeichen sind einfach zu wenig, um alle international gültigen Zeichen abzubilden. In der Zukunft wird die ISO-8859-Norm durch den Unicode-Standard abgelöst. Dieser findet vor allem in Form der UTF-8-Kodierung immer mehr Verbreitung.
- ISO 8859-1: Latin-1, Westeuropäisch
- ISO 8859-2: Latin-2, Mitteleuropäisch
- ISO 8859-3: Latin-3, Südeuropäisch
- ISO 8859-4: Latin-4, Nordeuropäisch
- ISO 8859-5: Kyrillisch
- ISO 8859-6: Arabisch
- ISO 8859-7: Griechisch
- ISO 8859-8: Hebräisch
- ISO 8859-9: Latin-5, Türkisch
- ISO 8859-10: Latin-6, Nordisch
- ISO 8859-11: Thai
- ISO 8859-12: wurde entwickelt, aber nie spezifiziert
- ISO 8859-13: Latin-7, Baltisch
- ISO 8859-14: Latin-8, Keltisch
- ISO 8859-15: Latin-9, Westeuropäisch
- ISO 8859-16: Latin-10, Europa
Die Teilnormen von ISO 8859 sind eng miteinander verwandt. Sie unterscheiden sich lediglich durch zusätzliche nicht darstellbare Steuerzeichen an den in ISO 8859 freien Positionen.
Unicode
Unicode ist ein internationaler Standard, der jedes Schriftzeichen oder Textelement aller bekannten Schriftkulturen und Zeichensysteme in einem digitalen Code festlegt. Die Verwendung unterschiedlicher und inkompatibler Kodierungen und Zeichensätze in verschiedenen Ländern und Kulturkreisen soll so beseitigt werden. Ein Ziel ist, einen Zeichensatz für alle Sprachen und alle Zeichen zu haben.
ISO/IEC 10646 ist die bedeutungsgleiche Bezeichnung der ISO für den Unicode-Zeichensatz. Unicode wird von der ISO als Universal Character Set (UCS) bezeichnet.
Jedes Unicode-Zeichen hat einen stabilen Code (z. B. Ux00DF hex), hat einen stabil gültigen Zeichennamen (z. B. LATIN LETTER SHARP S), es existiert eine Demo-Darstellung (z. B. "ß") und hat dokumentierte Zeicheneigenschaften (z. B. letter, lower case).
Unicode wird ständig um weitere Zeichen ergänzt. Dabei durchbricht der Zeichensatz die alte 8-Bit-Grenze von ISO 8859. Aus diesem Grund gibt es Unicode auch mit 16 oder 32 Bit (Nutzung momentan bis 31 Bit). UTF-8 wird nur für die ASCII- und Latin-1-Kompatibilität benötigt. Das bedeutet, die ersten 256 Zeichen entsprechen ISO 8859-1 und darin wiederum die ersten 128 Zeichen dem ASCII.
- UTF-8 (8-Bit-Unicode) / UCS-1 (1 Byte)
- UTF-16 (16-Bit-Unicode) / UCS-2 (2 Byte)
- UTF-32 (32-Bit-Unicode) / UCS-4 (4 Byte)
Damit man die entsprechende Kodierung der Zeichen in einer Textdatei erkennen kann, gibt es sich wiederholende Codemuster bzw. Bitmuster, anhand der man erkennen kann, ob es sich um UTF-8, UTF-16 oder UTF-32-kodierte Zeichen handelt.
Bitmuster | Zeichen (hex) | Speicher pro Zeichen | Anzahl der Zeichen |
---|---|---|---|
0xxx xxxx | 0 ... 7F | 7 Bit (ASCII) | 128 |
110x xxxx 10xx xxxx | 80 ... 7FF | 2 Byte | 2.048 |
1110 xxxx 10xx xxxx 10xx xxxx | 800 ... FFFF | 3 Byte | 65.536 |
1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx | 10000 ... 10FFFF | 4 Byte | 2.097.152 |
Andere Zeichensätze
Bevor Unicode standardisiert wurde, gab es verschiedene weitere Zeichensätze.
- verschiedene IBM-Codepages, z. B. CP427 (8 Bit)
- verschiedene Windows-Codepages, z. B. Windows-1252 (8 Bit)
- Mac, z. B. mac-roman
- EBCDIC (IBM Großrechner)
- Big 5 (traditional chinese), GB-2312 (simplified chinese)
- JIS 0208, JIS 0212 (Japanisch)
- Zeichensätze für Koreanisch und Vietnamesisch