Zeichenkodierung - LinkFang.de





Zeichenkodierung


Eine Zeichenkodierung (englisch Character encoding, kurz Encoding) erlaubt die eindeutige Zuordnung von Schriftzeichen (i. A. Buchstaben oder Ziffern) und Symbolen innerhalb eines Zeichensatzes. In der elektronischen Datenverarbeitung werden Zeichen über einen Zahlenwert kodiert und eignen sich damit für Übertragungen oder Speicherungen. Der deutsche Umlaut Ü wird zum Beispiel im ISO-8859-1-Zeichensatz mit dem Dezimalwert 220 kodiert. Im EBCDIC-Zeichensatz kodiert der Wert 220 die geschweifte Klammer }. Zur richtigen Darstellung eines Zeichens muss also die Zeichenkodierung bekannt sein; der Zahlenwert allein reicht nicht aus.

Zahlenwerte aus Zeichenkodierungen lassen sich auf verschiedene Art speichern oder übertragen, z. B. als Morsezeichen, verschieden hohe Töne (Faxgerät), verschieden hohe Spannungen.

Binäre Systeme hatten seit jeher eine besondere Bedeutung, da mit steigender Anzahl der Basiselemente des Codes die Gefahr von Verwechslungen steigt.

Geschichte

Die Anfänge dieser Technik liegen in der Antike. Zum Beispiel informierte Agamemnon seine Truppen von einem Schiff aus mit dem Licht eines Feuers darüber, dass er die Invasion Trojas starten wollte. Bekannt sind ferner Rauchzeichen bei den Indianern oder Nachrichtenübermittlung durch Trommelzeichen in Afrika.

Insbesondere zur Verständigung von Schiffsverbänden in der Nautik wurden die Techniken später verfeinert. Sir Walter Raleigh erfand für die Verständigung seines Geschwaders auf der Südamerikafahrt 1617 eine Art Vorläufer der Flaggencodierung.

1648 schließlich war es Englands späterer König James II., der das erste Signalflaggensystem in der britischen Marine einführte.

Nach der Erfindung der Telegrafie benötigte man auch hier eine Zeichenkodierung. Aus den ursprünglichen Ideen des Engländers Alfred Brain entstanden 1837 der originale Morsecode und 1844 der modifizierte Morsecode.

Das CCITT (Comité Consultatif International Telegraphique et Telephonique) war schließlich die erste Institution, die einen standardisierten Zeichensatz definierte. Dabei basierte dieser Zeichensatz auf einem von Jean-Maurice-Émile Baudot 1870 entwickelten 5er-Code-Alphabet für seinen Synchrontelegraphen, dem Baudot-Code, dessen Prinzip noch heute verwendet wird.

Computer und Datenaustausch

Mit der Entwicklung des Computers begann die Umsetzung der im Grunde schon seit dem Baudot-Code verwendeten binären Zeichenkodierung in Bit-Folgen, bzw. intern meist in verschiedene elektrische Spannungswerte als Unterscheidungskriterium, ganz analog zu der bisher zur Unterscheidung der Signalwerte genutzten Tonhöhe oder Signaldauer.

Um diesen Bit-Folgen darstellbare Zeichen zuzuordnen, mussten Übersetzungstabellen, sogenannte Zeichensätze, engl. Charsets, festgelegt werden. 1963 wurde eine erste 7-Bit-Version des ASCII-Codes durch die ASA (American Standards Association) definiert, um eine Vereinheitlichung der Zeichenkodierung zu erreichen. Obwohl IBM an der Definition mitgearbeitet hatte, führte man 1964 einen eigenen 8-Bit-Zeichencode EBCDIC ein. Beide finden bis heute in der Computertechnik Verwendung.

Da für viele Sprachen jeweils unterschiedliche diakritische Zeichen benötigt werden, mit denen Buchstaben des lateinischen Schriftsystems modifiziert werden, gibt es für viele Sprachgruppen jeweils eigene Zeichensätze. Die ISO hat mit der Normenreihe ISO 8859 Zeichenkodierungen für alle europäischen Sprachen (einschließlich Türkisch) und Arabisch, Hebräisch sowie Thai standardisiert.

Das Unicode Consortium schließlich veröffentlichte 1991 eine erste Fassung des gleichnamigen Standards, der es sich zum Ziel gesetzt hat, alle Zeichen aller Sprachen in Codeform zu definieren. Unicode ist gleichzeitig die internationale Norm ISO 10646.

Bevor ein Text elektronisch verarbeitet wird, muss der verwendete Zeichensatz und die Zeichenkodierung festgelegt werden. Dazu dienen beispielsweise folgende Angaben:

  • Definition des Zeichensatzes in einer HTML-Seite
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  • Definition des Zeichensatzes in den Kopfzeilen (Headern) einer E-Mail oder eines HTTP-Pakets
Content-Type: text/plain; charset="ISO-8859-1"

Grafische Darstellung

Das Vorhandensein von Software für Zeichenkodierung und -dekodierung garantiert noch nicht die richtige Darstellung auf dem Computerbildschirm. Zu diesem Zweck muss auch eine Schriftart verfügbar sein, die die Zeichen des Zeichensatzes enthält.

Differenzierung der Begriffe durch Einführung des Unicodes

Mit Einführung des Unicodes und der damit verbundenen Notwendigkeit, Zeichen durch mehr als ein Byte darzustellen, wurden genauere Begriffe notwendig. Derzeit werden im Deutschen die Begriffe Zeichensatz, Code, Kodierung, encoding manchmal synonym, manchmal differenzierend verwendet. Im Englischen existieren bereits klare Differenzierungen:

Ein Zeichensatz (character set oder character repertoire) ist eine Menge S verschiedener Schriftzeichen.

Eine Codemenge (code space) ist eine endliche Teilmenge M der natürlichen Zahlen.

Ein Zeichencode (ccs, coded character set, codepage) ist ein Zeichensatz S mit einer Codemenge M und einer injektiven Abbildung zwischen den Schriftzeichen in S und den Zahlen in M.

Ein Codepunkt (codepoint oder encoded character) ist ein Element der Codemenge M, das sein zugeordnetes Zeichen aus S bezeichnet. Texte werden durch die Codepunkte ihrer Schriftzeichen dargestellt, also als Sequenz von Zahlen aus M.

Als nächstes muss man die Darstellung der Codepunkte im Rechner festlegen. Das encoding allgemein definiert die Darstellung der Codepunkte als Bytefolge. Mit encoding form (character encoding form, cef) bezeichnet man die Länge der Darstellungselemente (1, 2 oder 4 Byte) und die Abbildung der möglicherweise längeren Codepunkte in diese Elemente. Mit encoding scheme (character encoding scheme, ces) bezeichnet man die Ablage dieser Elemente im Speicher (Big oder little endian). Eine allgemein akzeptierte Übersetzung beider Begriffe existiert im Deutschen noch nicht. Eine Bytefolge, die einen Codepunkt und damit ein Zeichen darstellt, nennt man code unit.

In einfachen Fällen gibt es nicht mehr als 256 = 28 Codepunkte, so dass man jeden Codepunkt in einem Byte speichern kann, z. B. bei Verwendung eines der in ISO 8859 definierten Zeichencodes.

Bei Verwendung von Unicode ist das nicht mehr möglich, da S weit mehr als 256 Zeichen enthält. Häufige encodings sind UTF-8, UTF-16, UCS-2 und UTF-32. Bei UTF-16 (cef) werden die Codepunkte zwischen 0 und 216-1 in zwei und alle größeren in vier Byte abgespeichert. Wie bei allen encodings mit mehr als einem Byte Elementlänge gibt es mindestens die zwei Schemen(ces) UTF-16BE (big-endian) und UTF-16LE (little-endian), die sich in der Reihenfolge der Bytes in einer code unit unterscheiden.

Beim UTF-32 verwendet man immer vier Byte für jeden Codepunkt, und UTF-8 verwendet je nach Codepunkt ein oder mehrere Bytes: die Codepunkte 0 bis 127 werden in einem einzigen Byte gespeichert, so dass diese Darstellung bei den meisten englischen und europäischen Texten platzsparend ist, denn die Zeichen mit diesen Codepunkten (Zeichen des ASCII) kommen mit Abstand am häufigsten vor. Weitere Verfahren sind etwa: SCSU, BOCU und Punycode. Komplexe Schemen können zwischen mehreren Varianten wechseln (ISO/IEC 2022).

Um die Reihenfolge der Bytes in einer code unit unmissverständlich anzugeben, wird oft eine BOM (byte order mark) vorangestellt (0xEF,0xBB,0xBF bei UTF-8; 0xFF, 0xFE bei UTF-16LE; 0xFE, 0xFF bei UTF-16BE).

Eine Glyphe ist eine grafische Darstellung eines einzelnen Schriftzeichens.

Beispiel: Das chinesische Schriftzeichen für Berg, shan, 山 hat im Unicode den Codepunkt U+5C71 = 山 und benötigt zur Darstellung 15 Bit. Mit UTF-16 als cef wird es als eine code unit abgelegt. Mit ces bigendian steht 5C, 71 im Speicher, mit littleendian 71, 5C. Mit UTF-8 stehen die drei units E5, B1, B1 im Speicher. Die Glyphe ist 山.

Zur Erleichterung für den verwirrten Leser sei noch angemerkt, dass die weitaus meisten Texte in einer der drei Unicode-encodings UTF-8, UTF-16BE oder UTF-16LE gespeichert sind, was den Umgang mit Texten wesentlich erleichtert.

Siehe auch

Literatur

  • Jacques André: Caractères numériques: introduction. In: Cahiers GUTenberg. Bd. 26, Mai 1997, ISSN 1257-2217 , S. 5–44, (in französischer Sprache).
  • Yannis Haralambous: Fonts & encodings. From Unicode to advanced typography and everything in between. Übersetzt von P. Scott Horne. O'Reilly, Beijing u. a. 2007, ISBN 978-0-596-10242-5 (in englischer Sprache).
  • Peter Karow: Digitale Schriften. Darstellung und Formate. 2. verbesserte Auflage. Springer, Berlin u. a. 1992, ISBN 3-540-54917-X.
  • Mai-Linh Thi Truong, Jürgen Siebert, Erik Spiekermann (Hrsg.): FontBook. Digital Typeface Compendium (= FontBook 4). 4. überarbeitete und erweiterte Auflage. FSI FontShop International, Berlin 2006, ISBN 3-930023-04-0 (in englischer Sprache).

Weblinks


Kategorien: Zeichenkodierung

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Zeichenkodierung (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.