30. November – Blue Beanie Day

Heute jährt sich wieder der Tag, an dem sich Webentwickler blaue Mützen aufsetzen, um die Bedeutung vom Webstandards zu würdigen. Der Blue Beanie Day geht zurück auf Jeffrey Zeldman; t3n hat dem Tag einen Artikel gewidmet.

SELFHTML hat auch eine blaue Mütze – in der Hand. Um sie auf den Kopf setzen zu können braucht es Euch! Siehe auch die aktuelle Diskussion im Forum.

Zeichenkodierung

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Wenn Sie sich mit Zeichenkodierung noch nicht weiter beschäftigt haben, ist es sicherlich am besten, wenn Sie zuerst die auf dieser Seite beschriebenen Grundlagen zur Zeichenkodierung lesen und sich anschließend die konkreten Beschreibungen zur Umsetzungen in den einzelnen Techniken der nachfolgenden Links anschauen.

[Bearbeiten] Bytes und Buchstaben

Computer kennen im Prinzip keine Buchstaben oder Zeichen, sondern nur Bytes. Bytes sind Zahlen im Bereich von 0 bis 255. Um mit Zahlen einen Text darstellen zu können, benötigt der Computer eine Zuordnungstabelle, in der verzeichnet ist, welche Zahl für welchen Buchstaben stehen soll. Diese Tabelle ist in beide Richtungen eindeutig, aus einem Buchstaben wird also exakt eine Zahl, und aus dieser Zahl wird umgekehrt wieder exakt dieser Buchstabe.

[Bearbeiten] ASCII

Grundsätzlich ist die Zuordnung der Zahl zum Buchstaben vollkommen willkürlich wählbar, und daher entwickelten sich in der Anfangszeit der Computer in Amerika mehrere unterschiedliche Zuordnungsvorschriften. Von diesen haben sich zwei heute gehalten: der American Standard Code for Information Interchange (ASCII) und der Extended Binary Coded Decimals Interchange Code (EBCDIC). Der Unterschied zwischen den beiden lässt sich an einem Beispiel verdeutlichen: Im ASCII wird das große A dem Bytewert 65 zugeordnet, und das kleine a dem Bytewert 97. Im EBCDIC erhält das kleine a den Wert 129, das große A den Wert 193.

Drückt man also eine Taste der Tastatur, erkennt der Computer, welche Taste gedrückt wurde, und ordnet ihr aufgrund des konfigurierten Tastaturlayouts den Bytewert des Buchstabens zu, der sich dahinter verbirgt. Bei der Ausgabe des Buchstabens auf dem Bildschirm wird der Bytewert umgewandelt in die Anweisung, wie der entsprechenden Buchstabe zu malen ist, und er erscheint dann auf dem Bildschirm. Wie der Buchstabe konkret aussieht, entscheidet dabei die Malanweisung der Schriftart. Ändert man die Schriftart, wird eine neue Malanweisung verwendet, aber die Bytewerte der Zeichen bleiben identisch.

ASCII-Tabelle
Dezimal  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
Hex. 0 1 2 3 4 5 6 7 8 9 A B C D E F
 32 20 ! " # $ % & ' ( ) * + , - . /
 48 30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
 64 40 @ A B C D E F G H I J K L M N O
 80 50 P Q R S T U V W X Y Z [ \ ] ^ _
 96 60 ` a b c d e f g h i j k l m n o
112 70 p q r s t u v w x y z { | } ~  

Diese betagten Codes wie ASCII und EBCDIC haben jedoch eine Schwäche: Mit ihnen lassen sich, da sie einem Buchstaben ein Byte zuordnen, maximal 256 verschiedene Zeichen darstellen. Dieser Zeichenvorrat reicht gerade für das lateinische Alphabet und einige zusätzliche Zeichen. Als die Codes in den 1960ern entstanden, war das für die englisch sprechenden Amerikaner ausreichend. Außerdem mussten technische Limits ebenfalls berücksichtigt werden. Aber es gibt weltweit noch viele andere Sprachen und Alphabete und somit weit mehr als 256 unterschiedliche Zeichen. Als ASCII entstand, kannten manche Computer sogar nur 7 Bits pro Byte, weswegen ASCII auch nur bis für die Bytewerte 0 bis 127 definiert ist. Nebenstehend ist die ASCII-Codetabelle dargestellt, soweit es sich um druckbare Zeichen handelt (die Zeichen von 0 bis 31 sowie 127 sind Steuerzeichen). Um den ASCII-Wert eines Zeichens zu ermitteln, addieren Sie einfach den Zeilen- und Spaltenwert - entweder in dezimaler oder hexadezimaler Form. So hat z.B. der Großbuchstabe „K“ den dezimalen Wert „75“ (=64+11), bzw. den hexadezimalen Wert „4B“ (=40+B).

Die erste, nicht hundertprozentig befriedigende Lösung für dieses Problem bestand darin, für andere Alphabete neue Zuordnungen zu erstellen. Dies bedeutete bei der interkulturellen Kommunikation aber einen kleinen Mehraufwand. Wollte beispielsweise ein Russe einem Amerikaner einen russischen Text zukommen lassen, so reichte es nicht, einfach die Textdatei weiterzugeben. Der Absender musste zusätzlich die für das kyrillische Alphabet verwendete Codierung angeben. Mit der amerikanischen Codierung würde der Computer des Empfängers die Bytes als lateinische Buchstaben interpretieren und somit einen sinnlosen Buchstabensalat produzieren.

[Bearbeiten] ISO-8859-Familie

 Win-1252  und ISO-8859-1
Dezimal  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
Hex. 0 1 2 3 4 5 6 7 8 9 A B C D E F
128 80   ƒ ˆ Š Œ   Ž  
144 90   ˜ š œ   ž Ÿ
160 A0   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬   ® ¯
176 B0 ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
192 C0 À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
208 D0 Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
224 E0 à á â ã ä å æ ç è é ê ë ì í î ï
240 F0 ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
Farben: nicht belegt, nicht sichtbar

Im westeuropäischen Sprachraum verbreiteten sich insbesondere zwei Codierungen aus der sogenannten ISO-8859-Familie: ISO-8859-1 und ISO-8859-15. Den Codierungen der ISO-8859-Familie ist gemeinsam, dass sie nur 256 verschiedene Zeichen codieren können, da ein Zeichen immer mit einem Byte codiert wird. Jede dieser Codetabellen versucht, möglichst alle Zeichen möglichst vieler Schriften zu speichern. Sie verwenden alle die ASCII-Codetabelle für die Zeichen 0 bis 127 und definieren zusätzlich die Werte 160 bis 255. Sofern in diesem Bereich das gleiche Zeichen in verschiedenen Schriften vorkommt, überlappen sie sich zumeist. Eine weitere in Westeuropa häufiger verwendete Codierung ist Windows-1252, die auf ISO-8859-1 aufbaut und zusätzlich die Zeichen 128 bis 159 verwendet. Es blieb aber immer das Problem, dass viele Zeichen nicht in allen Codierungen vorhanden waren. Das Euro-Zeichen (€) fehlt z.B. in den meisten ISO-Codierungen.

HTML 3.2 versuchte, das Problem zu lösen, indem für ISO-8859-1 und einige andere Zeichen in anderen Codierungen (z.B. griechische Buchstaben) Zeichen-Entities definiert wurden. Der Buchstabe „Ä“ kann z.B. auch als „&Auml;“ (= A mit Umlaut) angegeben werden (siehe hierzu die Zeichenreferenz) - unabhängig von der Codierung. Letztlich war dieses Verfahren aber auch nicht zielführend.

Weiterhin gibt es für die Sprachregionen Osteuropas (Russisch etc.) sowie die asiatischen Sprachen (Chinesisch, Japanisch, Koreanisch, abgekürzt CJK) eigene Codetabellen, die sich teilweise eigenständig und unabhängig entwickelt haben und mitunter nur die Anforderungen des jeweiligen Sprachraumes berücksichtigen.

[Bearbeiten] Der universale Code: Unicode

Mit Unicode werden so ziemlich alle Zeichenkodierungsprobleme dieser Welt gelöst. Und weil Webseiten potentiell mit allen Schriften dieser Welt genutzt werden, ist für HTML 4.0 und XML (und damit auch XHTML) festgelegt, dass grundsätzlich alle in Unicode definierten Zeichen vorkommen dürfen.

Mit dieser Festlegung kann man also jedes der mittlerweile über 100.000 Unicode-Zeichen in seinem Text verwenden. Aber Unicode regelt nicht nur die Codierung aller Schriftzeichen dieser Welt, sondern kennt zu jedem Zeichen dutzende definierte Eigenschaften. Ein Zeichen besitzt mindestens folgende Informationen:

  • der eindeutige Unicode-Name des Zeichens
  • den zugeordneten Codepoint (die „Nummer“ des Zeichens)
  • eine generelle Kategorisierung (Buchstabe, Zahl, Symbol, Interpunktion, ...)
  • weitere grundsätzliche Charakteristiken (Whitespace, Bindestrich, alphabetisch, ideographisch, Nicht-Zeichen, veraltet, ...)
  • anzeigerelevante Informationen (Schreibrichtung, Form, Spiegelung, Breite)
  • Groß-/Kleinschreibung
  • Zahlenwert und -typ bei Zahlzeichen
  • Trennfunktionen (zwischen Wörtern, Zeilen, Sätzen,...)
  • usw.

Die meisten Eigenschaften eines Zeichens sind nur für die interne Behandlung durch den Computer relevant. Beispielsweise werden arabische Schriftzeichen automatisch korrekt von rechts nach links geschrieben, oder der Zeilenumbruch nutzt die Stellen, an denen eine Wortgrenze z.B. durch ein normales Leerzeichen existiert. Dieser kleine Exkurs soll aber verdeutlichen, dass die Bytewerte der Buchstaben für den Computer viel mehr bedeuten können, als nur den Buchstaben an sich.

Über die Definition von Zeichen und ihren Codepoints hinaus liefert das Unicode-Consortium noch eine Fülle von weiteren Standardisierungen, die sich auf die linguistisch korrekten Behandlung von schriftlicher menschlicher Sprache beziehen. Darunter sind Algorithmen zur sprachspezifischen Sortierung (Beispiel: Im Deutschen gibt es zwei Sortierungsvarianten, Wörterbücher sortieren mit ä=a, ö=o, ü=u, Telefonbücher mit ä=ae, ö=oe, ü=ue) und zur Normalisierung (Wie prüft man, ob zwei Zeichenketten identisch sind).

[Bearbeiten] Codierungsformen von Unicode-Zeichen

Der oben erwähnte Codepoint eines Unicode-Zeichens ist nur eine abstrakte Nummer. Die Schreibweise dieser Nummer im Unicode-Standard erfolgt in hexadezimalen Zahlen mit vorangestelltem „U+“. Der Codepoint legt noch keinerlei computerkompatible Darstellung fest, dies ist Aufgabe des Codierschemas. Da die Unicode-Codepoints von U+0000 bis U+10FFFF (hexadezimale Zahlendarstellung), mit einer beabsichtigten Lücke zwischen U+D7FF und U+E000, reichen, sind für eine vollständige Codierung des gesamten Codepoint-Bereichs als Binärzahl mindestens 3 Byte erforderlich.

Im Folgenden werden die verbreiteten Speichervarianten von Unicode-Zeichen kurz vorgestellt.

[Bearbeiten] UTF-32: Simpel, aber verschwenderisch

Da Computer viel besser mit Vielfachen von 2 umgehen können, hat man kein Codierschema mit 3 Bytes definiert, sondern als simpelste Variante UTF-32 festgelegt, bei dem jede Codeeinheit 32 Bit = 4 Bytes groß ist. Der Codepoint jedes Zeichens wird hierbei einfach als 32-Bit-Zahlwert gespeichert.

Es gibt von UTF-32 zwei Varianten, UTF-32LE (Little Endian) und UTF-32BE (Big Endian), die sich einfach nur in der Reihenfolge unterscheiden, mit denen einzelne Bytes einer größeren Zahl in den Datenstrom gegeben werden. Big Endian beginnt mit der „Tausenderstelle“, Little Endian mit der „Einerstelle“. Damit eindeutig festgestellt werden kann, welche Variante genutzt wird, gibt es ein spezielles Zeichen namens „BOM“ (Byte Order Mark) mit dem Codepoint U+FEFF, welches dem Datenstrom vorangestellt wird. Sind die ersten vier Bytes eines Datenstroms 0x00, 0x00, 0xFE und 0xFF, so wird Big Endian verwendet. Sind es hingegen 0xFF, 0xFE, 0x00 und 0x00, wird Little Endian verwendet.

Der größte Nachteil ist, dass UTF-32 extrem verschwenderisch mit Speicherplatz umgeht. Da Unicode insgesamt pro Zeichen nur 3 Byte benötigt, ist pro UTF-32-Zeichen schon mindestens ein Byte ungenutzt verschwendet. Die am häufigsten benutzten Zeichen lassen sich sogar allesamt mit nur 2 Bytes darstellen, da sie sich im Bereich U+0000 bis U+FFFF befinden. Lateinische Buchstaben ohne diakritische Zeichen, wie sie in (westlichen) Fließtexten häufig vorkommen, lassen sich gar nur mit einem Byte codieren, da sie im Bereich U+0000 bis U+00FF vorkommen.

[Bearbeiten] UTF-16: Praxisformat im RAM

UTF-16 nutzt Codiereinheiten, die 16 Bit = 2 Bytes groß sind. Dies halbiert bei üblichen Texten den Speicherverbrauch im Vergleich zu UTF-32. Allerdings ließen sich mit nur 2 Bytes nicht mehr alle Unicode-Zeichen direkt darstellen. An dieser Stelle kommt die eingangs erwähnte beabsichtigte Lücke ins Spiel. Zeichen, die sich nicht direkt codieren lassen, weil sie aus dem Codepoint-Bereich zwischen U+100000 und U+10FFFF kommen, werden als Kombination zweier Codiereinheiten dargestellt, die aus dem Bereich U+D800 bis U+DFFF kommen. Da in diesem Bereich keine gültigen Unicode-Zeichen liegen können, kann ein Programm eindeutig erkennen, dass hier Zeichen aus dem höheren Bereich codiert wurden.

Auch für UTF-16 gibt es wieder die zwei Varianten UTF-16LE und UTF-16BE. Die BOM erscheint bei Big Endian als 0xFE, 0xFF, und bei Little Endian als 0xFF, 0xFE.

UTF-16 wird von vielen Programmen für die interne Speicherung von Unicode-Text verwendet. Da es aber gerade bei westeuropäischen Sprachen immer noch relativ viele Bytes verschwendet, und außerdem Probleme mit Unicode-unfähigen Programmen wie z.B. Editoren macht, wird es zum Datenaustausch zwischen Systemen nicht sehr häufig verwendet.

[Bearbeiten] UTF-8: Die Codierungsform der Wahl

UTF-8 nutzt Codiereinheiten, die 8 Bit = 1 Byte groß sind. Genau wie bei UTF-16 ist der Gesamtbereich der Unicode-Zeichen mit nur einem Byte nicht abzudecken, also werden bei Bedarf mehrere Bytes zusammengefasst, um einen Codepoint zu codieren.

UTF-8 hat im Vergleich zu den anderen UTF-Varianten mehrere praktische Vorteile:

  • Die ersten 127 Zeichen und Bytes sind identisch mit ASCII, d.h. alle Texte, die in der Hauptsache Unicode-Zeichen mit Codepoints zwischen U+0000 und U+007F verwenden, bleiben problemlos lesbar.
  • Auch Systeme, die UTF-8 nicht verstehen, können die Bytes trotzdem (eingeschränkt) verarbeiten, weil es sich um – wenn auch eher abstruse – „normale“ Zeichen handelt.
  • Selbst das byteorientierte Sortieren von UTF-8-Texten funktioniert und sortiert die Strings geordnet nach dem Zahlenwert der enthaltenen Codepoints.
  • Bei Verwendung von westeuropäischen Sprachen wird im Vergleich zu UTF-16 viel Speicherplatz gespart, da die meisten Zeichen nur ein Byte benötigen.

Ein Unicode-Zeichen kann in UTF-8 zwischen einem und vier Bytes groß sein. Um einen Codepoint in UTF-8 zu codieren, wird dessen binäre Zahldarstellung benötigt.

Unicode-Bereich Binäre Zahldarstellung 1. Byte 2. Byte 3. Byte 4. Byte
U+0000–U+007F          00000000 0xxxxxxx 0xxxxxxx
U+0080–U+07FF          00000yyy yyxxxxxx 110yyyyy 10xxxxxx
U+0800–U+D7FF, U+E000–U+FFFF          zzzzyyyy yyxxxxxx 1110zzzz 10yyyyyy 10xxxxxx
U+10000–U+10FFFF 000uuuuu zzzzyyyy yyxxxxxx 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx

In der Tabelle steht u für die Angabe der Unicode-Ebene (Plane) falls nicht BMP. Was die Position des Zeichens innerhalb der Ebene betrifft, steht x steht für den Anteil im letzten, y für den Anteil im vorletzten und z für den Anteil im drittletzten Zeichen. Die Angabe anderer Unicode-Ebenen als der BMP muss auf die genannte Art erfolgen. Die UTF-16-Surrogates U+D800–U+DFFF dürfen nicht in UTF-8 kodiert werden. Einige Datenbanksysteme tun dies trotzdem. Diese Fehlfunktion wurde nachträglich als CESU-8 standartisiert. Ebenso ist die Kodierung der Zeichen U+110000–U+1FFFFF oder die Erweiterung auf mehr als 4 Zeichen nicht erlaubt, da Unicode nur 17 Ebenen definiert und UTF-16 auch nur diese kodieren kann. Außerdem dürfen keine Sequenzen kodiert werden, die länger als nötig sind.

Ein Beispiel: Das Eurozeichen hat den Codepoint U+20AC. Die binäre Darstellung dieser Zahl ist 00100000 10101100. Setzt man diese Bits in das Schema der dritten Zeile, so erhält man 11100010 10000010 10101100 oder als Bytes 0xE2, 0x82 und 0xAC.

UTF8Kodierung.png

UTF-8 basiert zwar prinzipiell auf Big Endian, kennt aber offiziell keine Varianten für Big Endian oder Little Endian. Die für diesen Zweck benutzte Byte Order Mark sieht immer gleich aus: 0xEF, 0xBB und 0xBF. Da sie somit ihren Zweck der Erkennung der Byte-Reihenfolge nicht erfüllt, darf man sie ohne Probleme weglassen. Allerdings kann sie auch zur Erkennung, dass es sich um UTF-8-Text handelt, herangezogen werden.

[Bearbeiten] Ratschlag zur praktischen Anwendung

Empfehlung: Verwenden Sie, wo immer es geht, UTF-8!

Es hat viele Vorteile, bei der Wahl der codierbaren Zeichen nicht eingeschränkt zu sein. Selbst wenn ein Webauftritt garantiert nur für eine einzige Sprache (z.B. Deutsch) gestaltet werden muss, bietet nur Unicode die komplette Freiheit, wirklich alle Zeichen – insbesondere Interpunktionszeichen wie „typografische Anführungszeichen“ oder eben das Eurozeichen – beliebig verwenden zu können. Eingestreute Fremdwörter in einer anderen Sprache sind genauso problemlos möglich wie die Verwendung eher exotischerer Sonderzeichen wie den Brüchen ⅓, ⅔, ⅛, ⅜, ⅝, ⅞.

Viele Programme können schon seit langer Zeit mit UTF-8 umgehen: Server, Browser, Datenbanken, Programmiersprachen, Editoren. Der einzige Grund, auf UTF-8 zu verzichten, ist die Existenz von alten Systemen oder Daten, die nicht in UTF-8 gespeichert sind und bei denen es zu aufwendig wäre, sie nach UTF-8 zu konvertieren.

Allerdings muss fairerweise auch gesagt werden, dass die Unterstützung von UTF-8 bzw. Unicode im Allgemeinen nicht überall gleich gut implementiert ist. Dazu zwei Beispiele: MySQL unterstützt in älteren Versionen vor 5.5.3 nur die BMP (Basic Multilingual Plane – Unicode-Bereich U+0000 bis U+FFFF, [1]) und erfordert für vollen Unicode-Support die Wahl des passenden Charsets für die Textfelder - allgemein reicht der Support für die meisten aktuellen Sprachen aber auch mit den älteren Versionen aus, wenn man sich der Einschränkung bewusst ist. In PHP sind die gewöhnlichen Stringfunktionen nur auf Einzelbyte-Codierungen ausgelegt, die Nutzung von UTF-8 erfordert die Nutzung der mbstring-Extension und der darin enthaltenen Stringfunktionen, denen man die Codierung des behandelten Strings auch jeweils mitgeben kann, vgl. Handbuch Multibyte-String-Erweiterung (en).

[Bearbeiten] Begrifflichkeiten

Für die Zeichen-Problematik gibt es eine Reihe Begrifflichkeiten, die allerdings oftmals falsch angewendet werden. Nachfolgend der Versuch einer Aufklärung:

[Bearbeiten] Zeichensatz

Ein Zeichensatz (character set, kurz charset) ist die Gesamtheit der zur Verfügung stehenden Zeichen. Ein Zeichensatz ist ein eher abstraktes Gebilde, das nur die Zeichen selbst und eine Reihenfolge beschreibt, nicht jedoch eine konkrete Abbildung auf Byte-Werte. Das ist Aufgabe der Zeichenkodierung.

Beispielsweise ist Unicode ein Zeichensatz, UTF-8 hingegen ist eine Zeichenkodierung.

Zur Blütezeit der 1-Byte-Kodierungen (für Zeichensätze mit bis zu 256 Zeichen) wurde die Unterscheidung zwischen Zeichensatz und Zeichenkodierung in der Praxis oft vernachlässigt. Die Position eines Zeichens im Zeichensatz und seine Kodierung ist mit den Werten von 0 bis 255 (= 1 Byte) immer gleich, und auch eindeutig in beide Richtungen. Bei Zeichensätzen mit mehr als 256 Zeichen gibt es jedoch mehrere Verfahren, sie auf Byte-Werte abzubilden, weswegen die Unterscheidung zwischen Zeichensatz und Zeichenkodierung wichtig geworden ist.

Der Zeichensatz für HTML-Dokumente ist seit Version 4.0 stets Unicode. Die Zeichenkodierung eines konkreten Dokuments (Datei) ist beispielsweise UTF-8 oder ISO-8859-1. Mit einer 1-Byte-Kodierung wie ISO-8859-1 können nur deren Zeichen direkt eingefügt werden. Über die Escaping-Mechanismen Numerische Zeichenreferenz und teilweise Entitys lassen sich alle in Unicode definierten Zeichen in ein HTML-Dokument einfügen.

Statt Zeichensatz werden oft die Begriffe Font, Schriftart oder Zeichenkodierung verwendet, obwohl diese genau genommen etwas anderes bedeuten. Auch wird die englische Übersetzung charset an vielen Stellen verwendet, an denen korrekterweise encoding (Kodierung) stehen müsste. Das betrifft vor allem den Parameter charset im HTTP-Header Content-type und im gleichnamigen HTML-Meta-Element. Im Vorspann einer XML-Datei wird hingegen richtigerweise encoding verwendet.


[Bearbeiten] Codepoint

Zeichen in einem Zeichensatz (z. B. ASCII oder Unicode) werden in einer bestimmten Reihenfolge in einem Coderaum (code space) angeordnet. Die Position eines Zeichens ist der Codepoint (zu Deutsch etwa „Codeposition“). Ein Zeichensatz mit Codepoints ist ein codierter Zeichensatz (coded character set).

Ein Unicode-Zeichen wird oftmals in der Form U+xxxx beschrieben, zum Beispiel wenn aus der bildlichen Darstellung nicht eindeutig auf ein Zeichen geschlossen werden kann. Das xxxx ist die Codepoint-Angabe, üblicherweise in hexadezimaler Form. Auch für Numerische Zeichenreferenzen in HTML wird der Codepoint in dezimaler oder hexadezimaler Schreibweise verwendet.

Beispiel: € = Codepoint 20AC (dez. 8364) = &#8364; oder &#x20AC;


[Bearbeiten] Zeichenkodierung

Eine Zeichenkodierung beschreibt die konkrete Zuordnung eines Codepoints zu einem Byte oder einer Bytesequenz. UTF-8 und UTF-16 sind beispielsweise Kodierungen für den Zeichensatz Unicode.

Einige Software-Hersteller bezeichnen Zeichencodierungen mit einem historisch gewachsenen Synonym, nämlich der „Zeichensatz-“ oder kurz „Zeichentabelle“ (code page bzw. codepage). So bezeichnet beispielsweise Microsoft im seinem Windows-Betriebssystem die Zeichenkodierung UTF-8 als „Codepage 65001“ oder kurz „CP65001“.


[Bearbeiten] Schriftart

Für die grafische Darstellung von Zeichen wird eine Schriftart verwendet, die in der Regel eine in sich konsistente Gestaltung aufweist, beispielsweise für die Strich-Dicke oder Verzierungen. Arial, Times New Roman oder Courier sind Beispiele für Schriftarten.

[Bearbeiten] Glyphe

Der Begriff Glyphe wird gelegentlich für die konkrete Darstellung eines Zeichens verwendet. Die Schriftart bestimmt, welches Zeichen mit welcher Glyphe dargestellt wird.

[Bearbeiten] Font

Ein Font ist die Aufbereitung einer Schriftart für den Einsatz mit einem Computer, also eine Datei, die eine Schriftart beschreibt.



[Bearbeiten] Tastatur-Layout

Ein Tastatur-Layout oder eine Tastaturbelegung (auch Tastenlayout oder Tastenbelegung) ordnet einer Taste auf der Tastatur einen Codepoint zu.

Beispielsweise produziert die auf einer deutschen Tastatur mit „z“ beschriftete Taste mit einer deutschen Tastenbelegung den Unicode-Codepoint U+007A, also (erwartungsgemäß) ein „z“. Ändert man die Tastenbelegung auf US-amerikanisch, so erzeugt dieselbe Taste den Codepoint U+0079, also ein „y“. Mit einer russischen Belegung produzieren praktisch sämtliche Tasten andere Resultate, nämlich die Codepoints für kyrillische statt lateinischer Buchstaben, also z.B. „н“ (U+043D) statt „z“.


[Bearbeiten] Weblinks

Hinweis: Die Verweise sind nicht sprachspezifisch. Das heißt, es wird die Sprach-Version geöffnet, die in Ihrem Browser als bevorzugte Sprache voreingestellt ist (so eine Übersetzung existiert). Eine andere Sprache kann auf den W3C-Seiten oben rechts gewählt werden.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Schnell‑Index
Mitmachen
Werkzeuge
Spenden
SELFHTML