Unicode * ist ein internationaler Standard, in dem langfristig für jedes sinntragende Zeichen bzw. Textelement aller bekannten Schriftkulturen und Zeichensysteme ein digitaler Code festgelegt wird. Er will das Problem der verschiedenen inkompatiblen Kodierungen in den unterschiedlichen Ländern beseitigen. Herkömmliche Computer-Zeichensysteme umfassen einen Zeichenvorrat von entweder 128 (7 Bit) Zeichen wie der sehr bekannte ASCII-Standard oder 256 (8 Bit) Zeichen, wie z. B. ISO Latin-1, wovon nach Abzug der Steuerzeichen 96 Elemente bei ASCII und 192–224 Elemente bei den 8-Bit ISO-Zeichensätzen als Schrift- und Sonderzeichen darstellbar sind. Diese Zeichenkodierungen erlauben die gleichzeitige Darstellung nur weniger Sprachen im selben Text, wenn man sich nicht damit behilft, in einem Text verschiedene Schriften mit unterschiedlichen Zeichensätzen zu verwenden. Dieses behinderte den internationalen Datenaustausch erheblich.
In Unicode finden Zeichen der wichtigsten Industriestandard-Zeichensätze wie die ISO-Normen eine 1:1-Entsprechung (das bedeutet, dass bei einer Konversion vom Industriestandard zu Unicode und zurück das gleiche Ergebnis herauskommt). Heute erledigen die meisten Webbrowser die Darstellung dieser Zeichensätze mit einer Unicode-kodierten Schrift in der Regel perfekt und vom Benutzer unbemerkt.
ISO 10646 ist die von ISO verwendete praktisch bedeutungsgleiche Bezeichnung des Unicode-Zeichensatzes; er wird dort als Universal Character Set (UCS) bezeichnet.
Der Coderaum von Unicode umfasste ursprünglich 65.536 Zeichen (UCS-2, 16 Bit). Bald aber stellte sich dieses als unzureichend heraus. In Version 2.0 wurde der Codebereich um weitere 16 gleich große Bereiche, sogenannte Planes (Ebenen) erweitert. Somit sind nun maximal 1.114.112 (220+216) Zeichen bzw. Codepoints im Codebereich von U+00000 bis U+10FFFF vorgesehen (UCS-4, 32 Bit). Bislang, in Unicode 4.0, sind 96.382 Codes individuellen Zeichen zugeordnet. Das entspricht in etwa erst 9 % des Coderaumes.
Die Codebereiche (Blöcke), in welche die Unicode-Ebenen untergliedert werden, sind in der Liste der Unicode-Blöcke vollständig aufgeführt. Neben den gültig kodierten Zeichen ist auch sehr langfristig, z. T. noch recht vage Geplantes aufgeführt.
Die Speicherung und Übertragung von Unicode erfolgt in unterschiedlichen Formaten:
Zur Zeit ist Unicode strenggenommen noch eine Untermenge von ISO 10646: Während ISO 10646 Zeichencodes mit bis zu 31 Bit zulässt, sind bei Unicode maximal 21 Bit erlaubt.
Im Unicode werden „abstrakte Zeichen“ (engl.: characters) kodiert, nicht Glyphen. Letzteres ist die grafische Darstellung abstrakter Zeichen, die extrem unterschiedlich ausfallen kann, beim lateinischen Alphabet beispielsweise in Fraktur, Antiqua, im Irischen und in Handschriften. Für Glyphenvarianten, deren Normierung als sinnvoll und notwendig nachgewiesen wird, sind vorsorglich 256 „Variation Selectors“ vorgesehen, die ggf. dem eigentlichen Code nachgestellt werden können.
Andererseits haben Schriften, die sowohl das lateinische als auch das griechische Alphabet enthalten, doppelt kodierte identische Glyphen für die folgenden mehrdeutigen Buchstaben: Α Β Ε Ζ Η Ι Κ Μ Ν Ο Ρ Τ Υ Χ. Von vielen Zeichen gibt es nicht nur durch die Schriftart bedingte Varianten sondern auch innerhalb einer Schriftart mehr oder minder notwendige sprach-, schrift- oder kontextabhängige Glyphenvarianten und Ligaturen, zu deren Darstellung es sogenannter Smartfonttechniken wie OpenType, nicht aber einer Unicode-Kodierung bedarf. Grundsätzlich wurden und werden keine Ligaturen und sonstige zusammengesetzte Zeichen kodiert, auch wenn die Gründe für diese Politik nicht von jedermann verstanden werden. Lediglich zum Zwecke der Kompatibilität mit älteren Zeichensätzen sind Ligaturen und zusammengesetzte Zeichen enthalten.
In Grenzfällen wird hart um die Entscheidung gerungen, ob es sich um Glyphenvarianten oder kodierungswürdige Zeichen, d. h. unterschiedliche (Grapheme) handelt. Beispielsweise sind nicht wenige Fachleute der Meinung, das phönizische Alphabet könne man als Glyphenvarianten des hebräischen betrachten, da der gesamte Zeichenvorrat des Phönizischen dort eindeutige Entsprechungen hat, und auch die beiden Sprachen sehr eng verwandt sind. Die Auffassung, es handele sich um ein separates Zeichensystem, in der Unicode-Terminologie „script“, hat sich letztlich durchgesetzt. Anders verhält es sich bei CJK (Chinesisch, Japanisch und Koreanisch): Hier haben sich im 20. Jahrhundert die Formen vieler gleichbedeutender Schriftzeichen auseinanderentwickelt. Dennoch teilen sich die sprachspezifischen Glyphen die selben Codes im Unicode. In der Praxis werden hier wohl überwiegend sprachspezifische Schriftarten verwendet, und die zeichnen sich schon durch außergewöhnliche Dateigrößen aus. Die einheitliche Kodierung der CJK-Schriftzeichen (Han Unification) war eine der wichtigsten und umfangreichsten Vorarbeiten für die Entwicklung von Unicode. Besonders in Japan ist sie durchaus umstritten. Zu Einzelheiten (engl.) siehe Weblinks.
Als der Grundstein für Unicode gelegt wurde, musste berücksichtigt werden, dass bereits eine Vielzahl unterschiedlicher Kodierungen in verbreitetem Einsatz waren. Unicode-basierte Systeme sollten herkömmlich kodierte Daten mit geringem Aufwand handhaben können. Hierzu wurde für die unteren 256 Zeichen die weit verbreitete ISO 8859-1-Kodierung (Latin1) beibehalten ebenso wie die Kodierungsarten verschiedener nationaler Normen, z. B. TIS-620 für Thailändisch (fast identisch mit ISO 8859-11) oder ISCII für indische Schriften, die in der ursprünglichen Reihenfolge lediglich in höhere Codebereiche verschoben wurden.
Jedes Zeichen maßgeblicher überkommender Kodierungen wurde in den Standard übernommen, auch wenn es den normalerweise angelegten Maßstäben nicht gerecht wird. Hierbei handelt es sich zu einem großen Teil um Zeichen, die aus zwei oder mehr Zeichen zusammengesetzt sind, wie Buchstaben mit diakritischen Zeichen. Im übrigen verfügt auch heute noch ein großer Teil der Software nicht über die Möglichkeit, Zeichen mit Diakritika ordentlich zusammenzusetzen. Die exakte Festlegung von äquivalenten Kodierungen ist Teil des zum Unicode gehörenden umfangreichen Regelwerks. Obgleich die hexadekadischen Ziffern A bis F formal die Kriterien für eine gesonderte Kodierung erfüllen, musste dieses unterbleiben, weil in der Praxis deren Funktion stets von den Buchstaben A bis F übernommen wird.
Vielen Unicode-Zeichen ist keine Glyphe zugeordnet. Auch sie gelten als „characters“. Neben den Steuerzeichen wie Zeilenvorschub (U+000A), Tabulator (U+0009) usw. sind allein 19 Zeichen explizit als Leerzeichen definiert, sogar solche ohne Breite, die u. a. als Worttrenner gebraucht werden für Sprachen wie Thai oder Tibetisch, die ohne Wortzwischenraum geschrieben werden. Für bidirektionalen Text, z. B. Arabisch und Lateinisch sind sieben Formatierungszeichen notwendig.
In manchen Sprachen gibt es Digraphen und Trigraphen, die grundsätzlich als eigenständige Buchstaben behandelt, d. h. gesondert sortiert werden. Im Ungarischen beispielsweise betrifft das: cs, dz, dzs, gy, ly, ny, sz, ty und zs. Um Ausnahmen hiervon bei Bedarf zu kennzeichnen, wurde der „Combining Grapheme Joiner“ CGJ (U+034F) eingeführt. Der Name bedeutet eigentlich das Gegenteil, aber, auch das gehört zum Standard, auch die Namen kodierter Zeichen werden niemals geändert.
Trägt ein Buchstabe mehrere Diakritika darüber oder darunter, werden diese normalerweise vertikal gestapelt. Für Ausnahmefälle, in denen zwei Diakritika nebeneinander stehen müssen, sieht Unicode vor, dass ein CGJ dazwischengestellt wird. Es obliegt dem Schriftentwickler, die Erscheinungform der Zeichenfolgen „Diakritikon1 CGJ Diakritikon2“ festzulegen, auf die dann mittels einer Schrifttechnik wie OpenType zugegriffen werden kann.
Die im Standard festgelegte Eigenschaft „default ignorable“ qualifiziert den CGJ, in Sonderfällen auch andere sonst unnötige feine Unterschiede zu markieren. So kann die Datenverarbeitung deutscher Bibliotheken die Unterscheidung von Umlaut und Trema erfordern; meistens für fremdsprachige Namen. Hier empfiehlt Unicode, dem Trema (U+0308) den CGJ voranzustellen, um es als Umlaut zu kennzeichnen. Die ursprünglich vom DIN vorgeschlagene nachträgliche gesonderte Kodierung der Umlaut-Punkte hätte zu einer kaum vertretbaren Inkonsistenz großer Datenmengen geführt.
Im Vi Improved kann man Unicode-Zeichen (Voraussetzung: Unicode-basierte Locale oder als Unicode, zum Beispiel UTF-8, erkannte Datei) eingeben, indem man Strg+V,U und dann die hexadezimale Zeichennummer drückt, also zum Beispiel Strg+V,U,2,0,A,C für das Euro-Zeichen. Eine alternative Eingabemöglichkeit ist die Benutzung der Digraph-Methode des Vim.
In Emacs ab Version 21.4 kann man Unicode-Zeichen eingeben, indem man META-x ucs-insert und dann die hexadezimale Zeichennummer eingibt.
Unter Windows (ab Windows 2000) kann in vielen Programmen der Code hexadezimal eingegeben werden. Mit nachfolgendem Alt-x, innerhalb von MS Word 2003 aber Alt-c, wird das Zeichen erzeugt. Diese Tastenkombination kann unter Windows XP auch benutzt werden, den Code des vor dem Cursor stehenden Zeichens anzuzeigen.
Bei Apple-Computern muss die Unicode-Hex-Tastenbelegung aktiviert werden. Danach wird der Code bei gedrückter Alt-Taste eingegeben.
Ob das entsprechende Unicode-Zeichen auch tatsächlich am Bildschirm erscheint, hängt davon ab, ob die verwendete Schriftart eine Glyphe für das gewünschte Zeichen (also eine Grafik für die gewünschte Zeichennummer) enthält. Oftmals, z. B. unter Windows, wird, falls die verwendete Schrift ein Zeichen nicht enthält, nach Möglichkeit ein Zeichen aus einer anderen Schrift eingefügt. In der Typografie gilt so etwas als Fehler namens Zwiebelfisch. In Webbrowsern hingegen ist dieses zwar hässlich aber überaus nützlich.
Das freie Programm gucharmap (für Linux/UNIX) stellt den Unicode-Zeichensatz auf dem Bildschirm dar und bietet zusätzliche Informationen zu den einzelnen Zeichen.
Microsoft Windows liefert entsprechend „charmap.exe“ (Zeichentabelle) mit. Unter Apple Mac OS X steht ebenfalls eine systemweite Zeichenpalette bereit.
Das ebenfalls freie Programm „Quick Key“ (für Windows) stellt eine einfache Methode dar, häufig benötigte Unicode-Zeichen schnell einzugeben. Dazu stellt es eine frei zusammenstellbare Zeichentabelle zur Verfügung, deren Einträge per Klick in andere Programme eingefügt werden können.
Unicode | Zeichenkodierung | Datenformat
Unicode | Уникод | ইউনিকোড | Unicode | Unikod | Unicode | Unicode | Unicode | Unicode | Unicode | Unicode | Unikodo | Unicode | Unicode | Unicode | Unicode | Unicode | יוניקוד | यूनिकोड | Unicode | Unicode | Unicode | Unicode | Unicode | უნიკოდი | ಯುನಿಕೋಡ್ | 유니코드 | यूनिकोड | Unicode | Unicode | Unikods | युनिकोड | Unicode | Unicode | Unicode | Unicode | Unicode | Unicode | Юникод | Unikod | Unicode | Unicode | Unicode | Уникод | Unicode | யுனிகோடு | ยูนิโคด | Unicode | Юнікод | Unicode | Unicôde | Unicode | Thong-iōng-bé