Grundproblem
Am Anfang war ASCII (American Standard Code for Information Interchange), ein 7 Bit Code mit 128 Zeichen (0..127). Die Codewerte 0..32 werden als Steuerzeichen verwendet.
ASCII-Tabelle (7-Bit)
Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 00 | Nul | 26 | 1A | SUB | 52 | 34 | 4 | 78 | 4E | N | 104 | 68 | h |
1 | 01 | SOH | 27 | 1B | ESC (Escape) | 53 | 35 | 5 | 79 | 4F | O | 105 | 69 | i |
2 | 02 | STX | 28 | 1C | FS | 54 | 36 | 6 | 80 | 50 | P | 106 | 6A | j |
3 | 03 | ETX | 29 | 1D | GS | 55 | 37 | 7 | 81 | 51 | Q | 107 | 6B | k |
4 | 04 | EOT (End Of Transmission) | 30 | 1E | RS | 56 | 38 | 8 | 82 | 52 | R | 108 | 6C | l |
5 | 05 | ENQ | 31 | 1F | US | 57 | 39 | 9 | 83 | 53 | S | 109 | 6D | m |
6 | 06 | ACK | 32 | 20 | SP (Space) | 58 | 3A | : | 84 | 54 | T | 110 | 6E | n |
7 | 07 | BELL (Klingel) | 33 | 21 | ! | 59 | 3B | ; | 85 | 55 | U | 111 | 6F | o |
8 | 08 | BS (Back Space) | 34 | 22 | " | 60 | 3C | < | 86 | 56 | V | 112 | 70 | p |
9 | 09 | Hor. Tabulator | 35 | 23 | # | 61 | 3D | = | 87 | 57 | W | 113 | 71 | q |
10 | 0A | LF (Line Feet) | 36 | 24 | $ | 62 | 3E | > | 88 | 58 | X | 114 | 72 | r |
11 | 0B | Ver. Tabulator | 37 | 25 | % | 63 | 3F | ? | 89 | 59 | Y | 115 | 73 | s |
12 | 0C | FF (Form Feet) | 38 | 26 | & | 64 | 40 | @ | 90 | 5A | Z | 116 | 74 | t |
13 | 0D | CR (Carriage Return) | 39 | 27 | ' | 65 | 41 | A | 91 | 5B | [ | 117 | 75 | u |
14 | 0E | SO | 40 | 28 | ( | 66 | 42 | B | 92 | 5C | \ | 118 | 76 | v |
15 | 0F | SI | 41 | 29 | ) | 67 | 43 | C | 93 | 5D | ] | 119 | 77 | w |
16 | 10 | DLE | 42 | 2A | * | 68 | 44 | D | 94 | 5E | ^ | 120 | 78 | x |
17 | 11 | DC1 | 43 | 2B | + | 69 | 45 | E | 95 | 5F | _ | 121 | 79 | y |
18 | 12 | DC2 | 44 | 2C | , | 70 | 46 | F | 96 | 60 | ' | 122 | 7A | z |
19 | 13 | DC3 | 45 | 2D | - | 71 | 47 | G | 97 | 61 | a | 123 | 7B | { |
20 | 14 | DC4 | 46 | 2E | . | 72 | 48 | H | 98 | 62 | b | 124 | 7C | | |
21 | 15 | NAK | 47 | 2F | / | 73 | 49 | I | 99 | 63 | c | 125 | 7D | } |
22 | 16 | SYN | 48 | 30 | 0 | 74 | 4A | J | 100 | 64 | d | 126 | 7E | ~ |
23 | 17 | ETB | 49 | 31 | 1 | 75 | 4B | K | 101 | 65 | e | 127 | 7F | DEL (Delete) |
24 | 18 | CAN | 50 | 32 | 2 | 76 | 4C | L | 102 | 66 | f | |||
25 | 19 | EM | 51 | 33 | 3 | 77 | 4D | M | 103 | 67 | g |
Es fehlen jedoch Umlaute wie Ä;Ö,Ü usw. Deshalb wurde die Codierungstabelle (engl. CodePage CP) erweitert, leider nicht einheitlich:
Zeichen | MS-DOS | ISO-8859-1 | ROMAN (Mac) | HTML-Entität | |||
---|---|---|---|---|---|---|---|
Dez. | HEX | Dez. | HEX | Dez. | HEX | ||
Ä | 142 | 8E | 196 | C4 | 128 | 80 | Ä |
Ö | 153 | 99 | 214 | D6 | 133 | 85 | Ö |
ß | 225 | E1 | 223 | DF | 167 | A7 | ß |
CodePage-Link | CP850 | 8859-1 | ROMAN | www.eki.ee/letter |
Folge: Drückt man unter MS-DOS die Ä-Taste, wird 142 codiert, ein ISO-8859-1 System kann mit diesem Wert nichts anfangen und ein Mac gibt é aus.
Sobald man also den "sicheren" 7-Bit ASCII-Bereich verlässt konnte das zu Komplikationen führen. Ein Ausweg ist es, jedem besonderen Zeichen einen eigenen Namen zu geben, der nur aus ASCII-Zeichen besteht – die HTML-Entitäten oder benannte Zeichen: de.selfhtml.org/html/referenz/zeichen.htm
Bei dieser Methode kann praktisch nichts schief gehen, allerdings sind die Entitäten etwas länglich..
Oder man gibt dem Browser an, mit welchem Zeichensatz kodiert wurde:
Angabe des Zeichensatzes im Dokument-Head
<head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head>
Achtung Falle! Wenn ich z.B. auf meinem Mac im Quelltext schreibe:
<h4>Äpfel</h4>
Äpfel – sieht das im Browser so aus:
Das Problem ist also primär die Kodierung bei der Eingabe, denn ein Mäc-Ä wird im Speicher nicht entsprechend ISO-8859-1 Kodiert. Oder man denke an die Eingabe von Zeichen unter Windows mittels der Tastatureingabe ALT + Zahl, hier kommt die Kodierung "Windows-Codepage Western-Latin-1" zur Anwendung. Daher wählt man besser eine der drei folgenden Möglichkeiten Zeichen im Quelltext zu kodieren:
- Ä mit Ä als HTML-Entität
- Ä mit Ä als Dezimalzahl
- Ä mit &xC4; als Hexadezimalzahl
Die Zahlenwerte bei 2. und 3. werden dann gemäß der vereinbarten CodePage (hier ISO-8859-1) interpretiert. Nicht alle Zeichen sind wie bei 1. mit Namen erreichbar.
Vertiefung:
SELFHTML: Internationalisierung / Computer und geschriebene Sprache
SELFHTML: Internationalisierung / Zeichensätze (ISO-8859-Familie und andere)
Moderne Zeiten, Kodierung als UTF-8 in Unicode
Aktuelle Betriebssysteme sind in der Lage Zeichen im Unicode zu kodieren, so hat Wikipedia auf UTF-8 umgestellt: Wikipedia:Umstellung auf Unicode
Vertiefung:
http://www.alanwood.net/unicode/
SELFHTML: Internationalisierung / Das Unicode-System
ANSI character set and equivalent Unicode and HTML characters