Zeichenkodierungen und Unicode: Der definitive Leitfaden zu UTF-8, UTF-16 und mehr
In den frühen Tagen der Informatik war die Darstellung von Text einfach: Jedes Zeichen passte in 7 oder 8 Bit (ASCII). Doch als die Informatik global wurde, brauchten wir eine Möglichkeit, jedes Zeichen jeder Sprache der Welt darzustellen. Dies ist die Geschichte von Unicode und den Kodierungen, die ihn antreiben.
1. Der Unicode-Standard
Unicode ist selbst keine Kodierung, sondern ein universeller Zeichensatz. Er weist jedem Zeichen eine eindeutige Nummer zu, den sogenannten Code Point (z. B. U+0041 für 'A'). Wir benötigen jedoch immer noch eine Methode, um diese Nummern binär zu speichern.
UTF-8 (Der König des Web)
UTF-8 ist eine Kodierung mit variabler Breite, die 1 bis 4 Bytes pro Zeichen verwendet. Sie ist abwärtskompatibel zu ASCII.
- Vorteile: Effizient für westliche Sprachen, robust gegen Datenkorruption und der universelle Standard für das Web.
UTF-16
Verwendet entweder 2 oder 4 Bytes. Es ist die native Kodierung für Windows (NTFS) und viele Programmierumgebungen wie Java und JavaScript.
UTF-32
Verwendet genau 4 Bytes für jedes Zeichen. Während es für die Indizierung einfach ist, ist es sehr speicherineffizient.
2. Veraltete und regionale Kodierungen
Bevor Unicode dominant wurde, verwendeten verschiedene Regionen ihre eigenen Standards, von denen viele auch heute noch anzutreffen sind.
Chinesische Kodierungen (GB-Familie)
- GB2312: Der frühe Standard für vereinfachtes Chinesisch.
- GBK: Eine Erweiterung von GB2312 zur Unterstützung weiterer Zeichen.
- GB18030: Der aktuelle verbindliche Standard in China, der sowohl vereinfachtes als auch traditionelles Chinesisch unterstützt und vollständig auf Unicode abgebildet ist.
Japanische Kodierungen
- Shift-JIS: Historisch gesehen die beliebteste Kodierung für Japanisch, die intensiv in Windows und auf älteren Websites verwendet wurde.
Koreanisch und traditionelles Chinesisch
- EUC-KR: Eine verbreitete veraltete Kodierung für Koreanisch.
- Big5: Der Standard für traditionelle chinesische Schriftzeichen, der hauptsächlich in Taiwan und Hongkong verwendet wird.
3. Westliche veraltete Kodierungen
ISO-8859-1 (Latin-1)
Eine 8-Bit-Kodierung, die die meisten westeuropäischen Sprachen abdeckt.
Windows-1252
Eine leichte Variation von ISO-8859-1, die in älteren Versionen von Windows standardmäßig verwendet wurde.
4. Technische Nuancen: BOM und Endianness
Byte Order Mark (BOM)
Die BOM ist eine spezielle Byte-Folge am Anfang einer Textdatei (z. B. EF BB BF für UTF-8). Sie teilt der Software mit, welche Kodierung und Byte-Reihenfolge verwendet wird. Während sie für UTF-16 nützlich ist, wird sie für UTF-8 in Web-Umgebungen oft nicht empfohlen.
Little Endian vs. Big Endian
Relevant für UTF-16 und UTF-32; bezieht sich auf die Reihenfolge, in der Bytes im Speicher abgelegt werden.
Vergleichstabelle
| Kodierung | Bytes pro Zeichen | Kompatibilität | Bestens geeignet für |
|---|---|---|---|
| UTF-8 | 1-4 | ASCII | Web, Linux, Mac |
| UTF-16 | 2 oder 4 | Keine | Windows, Java, JS |
| GB18030 | 1, 2 oder 4 | GBK | Compliance (China) |
| ASCII | 1 | Universell | Altsysteme, nur Englisch |
Fazit
Die Welt hat sich weitgehend auf UTF-8 als Standard für den Datenaustausch geeinigt. Dennoch ist das Verständnis veralteter Kodierungen wie GBK oder Shift-JIS nach wie vor wichtig, wenn man mit Altsystemen oder spezifischer regionaler Software arbeitet. Im Zweifelsfall verwenden Sie für moderne Anwendungen immer UTF-8 ohne BOM.