Schlüsseltechnologie

STP013: Textkodierung


Listen Later

Dies ist ein Text. Für den Computer besteht er nur aus Zahlen. Xyrill erklärt diesmal, wie es kommt, dass wir ihn trotzdem lesen können.

Und jedes andere geschriebene Wort, das je existiert hat… natürlich nur idealtypisch.

ShownotesLaut Wiktionary:

[Text ist eine] mündliche oder schriftliche Folge von Sätzen, die miteinander syntaktisch und semantisch verbunden sind (Kohärenz, Kohäsion), eine abgeschlossene Einheit bilden (Kompletion) und eine bestimmte kommunikative Funktion (Textfunktion) erfüllen.

[Von] lateinisch textus für "Inhalt" oder "Gewebe der Rede", "Text".

  • zur Definition

    • Wiktionary geht vom linguistischen Blickwinkel aus
    • in der Informatik: Zeichenketten (oder synonym "Zeichenfolgen"), in Programmiersprachen meist als String bezeichnet
    • Problem: Computer können nur Zahlen! Wie bilden wir Zeichenketten als Zahlenfolgen ab?

      • Idee 1: jedes Zeichen als eine Zahl einer bestimmten Größe, z.B. 1 Byte oder 2 Byte (fixed-length code)
        • primitives Beispiel: alle Buchstaben des Alphabets durch ihre Position darstellen, z.B. "hallo" -> "08 01 12 12 15"
        • Idee 2: häufige Zeichen mit kurzen Bytefolgen darstellen, seltene Zeichen mit längeren Bytefolgen (variable-length code, siehe Entropiekodierung)
        • Beispiel: Morse-Code

          • variable Länge: z.B. "e" ist am häufigsten und deswegen nur 1 Ton kurz, "q" ist sehr selten und deswegen 4 Töne lang
          • Kodiertabelle enthält nicht nur Buchstaben und Ziffern, sondern auch Sonderzeichen (Punkt, Komma, etc.) und Spezialzeichen wie "Spruchende" oder "Fehler, Wiederholung ab letztem vollständigem Wort"
          • in der frühen Informatik (bis in die 1990er Jahre): Codepages (Zeichentabellen)

            • Codes mit fester Länge von meist 1 Byte (7 oder 8 Bit) pro Zeichen
            • Beispiel mit 7 Bit: ASCII, unter Linux siehe man ascii (RFC 20)
            • Beispiel mit 8 Bit: Codepage 437
            • Standardisierung als ISO/IEC 8859
            • Problem: 8 Bit (256 Zeichen) sind zu wenig für alle in europäischen Sprachen verwendeten Zeichen, insb. wegen diakritischer Zeichen -> verschiedene Codepages für verschiedene Sprachen -> Mojibake
            • spätestens mit zunehmend globaler Kommunikation im Internetzeitalter musste eine bessere Lösung her
            • Unicode

              • keine Textkodierung im engeren Sinne, sondern erstmal nur eine durchnummerierte Liste aller möglichen Zeichen (die Nummer zu einem Zeichen heißt Codepunkt)
              • Anspruch: wenn ein Zeichen in tatsächlichen Textdokumenten verwendet wird oder wurde, gehört es in Unicode (von Buchstaben über Redigierungssymbole mittelalterlicher Typografen bis zu Hieroglyphen und Keilschrift)
              • Größe: 17 Ebenen (Planes) zu je 65536 Codepunkten = 1.114.112 Codepunkte; davon sind 2048 Codepunkte aus technischen Gründen (für die Kodierung von Surrogatpaaren) unbelegbar, somit maximal möglich 1.112.064 Codepunkte
              • Ebenen in Unicode

                • Ebene 0: Basic Multilingual Plane mit allen zeitgenössischen und weitverbreiteten Schriftsystemen (Übersichtskarte)
                • Ebene 1: Supplementary Multilingual Plane mit historischen Schriftsystemen und Obskuritäten wie Domino/Mahjongg-Steinen und 😍 Emoji 😍
                • Ebene 2: Supplementary Ideographic Plane mit selten benutzten CJK-Schriftzeichen
                • Ebene 3-13: noch frei
                • Ebene 14: Supplementary Special-purpose Plane mit Steuerzeichen zur Selektion alternativer Schriftzeichenformen
                • Ebene 15/16: für private Verwendung reserviert
                • Kodierungen für Unicode mit fixer Länge

                  • UCS-2: eine 16-Bit-Zahl pro Zeichen -> kann nur die BMP kodieren (UCS-2 stammt aus der Zeit, bevor Unicode mehrere Planes hatte)
                  • UCS-4/UTF-32: eine 32-Bit-Zahl pro Zeichen -> extrem verschwenderisch
                  • Kodierungen für Unicode mit variabler Länge

                    • UTF-16: BMP-Zeichen als eine 16-Bit-Zahl, andere Zeichen als zwei 16-Bit-Zahlen -> Probleme mit Endianness
                    • UTF-8: jedes ASCII-Zeichen als ein Byte, alle anderen Zeichen als eine Folge von 2-5 Bytes (unter Linux siehe man utf-8)
                    • UTF-8 ist spektakulär: sehr kompakt, selbstsynchronisierend, einfach zu implementieren (auch in Hardware), sortierungserhaltend, ASCII-abwärtskompatibel, Nicht-ASCII-Zeichen enthalten niemals ASCII-Bytes; und wurde buchstäblich in einem Abend von Ken Thompson und Rob Pike auf einer Serviette entworfen
                    • Probleme von Unicode

                      • Anspruch: jeder bestehende Kodierungsstandard soll Zeichen für Zeichen in Unicode abbildbar sein -> dadurch unnötig viele Codepunkte insb. für diakritische Zeichen und Probleme mit Normalisierung
                      • allgemeiner: Was ist eigentlich ein Zeichen im Sinne von "ein Codepunkt"? (mehr dazu in der nächsten Folge) -> Unicode übernimmt hier oftmals teils kontroverse Klassifikationen aus nationalen Standards z.B. für indische und thailändische Schriften
                      • am signifikantesten hier: Han-Vereinheitlichung (Beispiel)
                      • Für die historische Herleitung von Schriftkodierung empfehlen wir wieder den großartigen Podcast Request for Comments. Diesmal die Folge über RFC 20 ASCII.

                        Das nächste Mal geht es dann um T̪͙̪̻̹̩̠͔͑͋ͥ͘ę̥͔̝̘ͦͬx̨̜̩̜͙̦̻̗̳̒̊͆t̯̳̓ͥ͐ͣ́d͔̱̗̯̪̭́͛͜ͅa̵͕̯͕̻̜ͮ͒ͭȓ̜͚͚̯͎͓̋̎̈́͘s̥̯̠̬̆̿͡t̫̱̺͉̱̓͒͑͐͢e̸͖̮̙̺̠̗̬̅ͅl̝͉͚ͪ͋ͤ͜l̵̦̪͔͈̉͑u̴̝̲̠̳̖̘͚̔n͙̹̍̆͊̈͢g̨͍̣̝̣͇̯̮̠̏.

                        ...more
                        View all episodesView all episodes
                        Download on the App Store

                        SchlüsseltechnologieBy Xyrillian Noises


                        More shows like Schlüsseltechnologie

                        View all
                        Chaosradio by Chaos Computer Club Berlin

                        Chaosradio

                        7 Listeners

                        Freak Show by Metaebene Personal Media - Tim Pritlove

                        Freak Show

                        10 Listeners

                        Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                        Logbuch:Netzpolitik

                        7 Listeners

                        Methodisch inkorrekt! by Methodisch inkorrekt!

                        Methodisch inkorrekt!

                        17 Listeners

                        c’t uplink - der IT-Podcast aus Nerdistan by c’t Magazin

                        c’t uplink - der IT-Podcast aus Nerdistan

                        5 Listeners

                        Jung & Naiv by Tilo Jung

                        Jung & Naiv

                        39 Listeners

                        heiseshow by heise online

                        heiseshow

                        2 Listeners

                        Übermedien by Übermedien

                        Übermedien

                        3 Listeners

                        Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                        Lage der Nation - der Politik-Podcast aus Berlin

                        242 Listeners

                        Die Wochendämmerung - Der stabile Wochenrückblick by Katrin Rönicke und Holger Klein (hauseins)

                        Die Wochendämmerung - Der stabile Wochenrückblick

                        14 Listeners

                        Sicherheitshalber by Der Podcast zur sicherheitspolitischen Lage in Deutschland, Europa und der Welt.

                        Sicherheitshalber

                        45 Listeners

                        Bit-Rauschen: Der Prozessor-Podcast von c’t by c't Magazin

                        Bit-Rauschen: Der Prozessor-Podcast von c’t

                        1 Listeners

                        Legion by rbb | NDR | Undone

                        Legion

                        5 Listeners

                        Haken dran – das Social-Media-Update der c't by Gavin Karlmeier

                        Haken dran – das Social-Media-Update der c't

                        2 Listeners

                        Passwort - der Podcast von heise security by Dr. Christopher Kunz, Sylvester Tremmel

                        Passwort - der Podcast von heise security

                        3 Listeners