UNICODE(7)

BEZEICHNUNG
Unicode - der allumfassende 16bit-Zeichensatz

BESCHREIBUNG
Der internationale Standard ISO 10646 definiert das Universal Character Set (UCS). UCS enthält sämtliche Zeichen sämtlicher anderen Zeichensatzstandards. Es garantiert auch round-trip compatibility, d.h. es können Konvertierungstabellen auf eine Art erstellt werden, dass beim Konvertieren eines Strings zwischen einer anderen Kodierung und UCS keinerlei Information verlorengeht. UCS enthält Zeichen zur Repräsentation beinahe jeder bekannten Sprache. Das beinhaltet neben den vielen Sprachen, die Erweiterungen der lateinischen Schrift benutzen, auch die folgenden Schriften und Sprachen: Griechisch, Kyrillisch, Hebräisch, Arabisch, Armenisch, Gregorianisch, Japanisch, Chinesisch, Hiragana, Katakana, Koreanisch, Hangul, Devangari, Bengalisch, Gurmukhi, Gujarati, Oriya, Tamilisch, Telugu, Kannada, Malayam, Thai, Lao, Bopomofo und einige andere. Zurzeit wird daran gearbeitet, weitere Schriften wie Tibetanisch, Khmer, Runen, Äthiopisch, Hieroglyphen, verschiedene Indo-Europäische Sprachen und viele andere ebenfalls zu erfassen. Bei den meisten der letzteren Schriften war bis zum Zeitpunkt der Veröffentlichung des Standards 1993 noch nicht geklärt, wie sie am besten kodiert werden könnten. Zusätzlich zu den von diesen Schriften benötigten Zeichen wurde auch eine große Anzahl von graphischen, typographischen, mathematischen und wissenschaftlichen Symbolen wie etwa denen von TeX, PostScript, MS-DOS, Macintosh, Videotext, OCR und vielen Textverarbeitungen integriert, außerdem spezielle Codes, die round-trip compability mit allen existierenden Zeichensätzen garantieren. Der UCS Standard (ISO 10646) beschreibt eine 31-bittige Zeichensatzarchitektur. Bisher wurde jedoch erst den ersten 65534 Positionen (0x0000 bis 0xfffd), der Basic Multilingual Plane (BMP), Zeichen zugewiesen, und es wird erwartet, dass nur sehr exotische Zeichen (z.B. Hieroglyphen) für besondere wissenschaftliche Zwecke jemals außerhalb dieser 16-Bit BMP platziert werden. Die UCS Zeichen 0x0000 bis 0x007f sind mit denen des klassischen US-ASCII Zeichensatzes, und die Zeichen im Bereich von 0x0000 bis 0x00ff mit denen des ISO 8859-1 Latin-1 Zeichensatzes identisch.

KOMBINATIONSZEICHEN
Einige Stellen im UCS wurden so genannten combining characters (Kombinationszeichen) zugewiesen. Sie sind mit den Akzenttasten auf Schreibmaschinen vergleichbar, bei denen sich die Schreibposition nicht verändert. Ein Kombinationszeichen fügt dem vorhergehenden Zeichen einfach einen Akzent hinzu. Die wichtigsten akzentuierten Zeichen besitzen eigene Codes im UCS, doch der Mechanismus der Kombinationszeichen erlaubt es, Akzente und andere diakritische Markierungen zu jedem beliebigen Zeichen hinzuzufügen. Kombinationszeichen folgen immer demjenigen Zeichen, auf das sie sich auswirken sollen. Zum Beispiel kann das Deutsche "Ä" (oder "Latin capital letter A with diaeresis") entweder durch den festen UCS Code 0x00c4 oder alternativ als Kombination des normalen "A" ("Latin capital letter A") gefolgt vom Kombinationszeichen für "doppelt gepunktet" ("combining diaeresis") als 0x0041 0x0308 dargestellt werden.

IMPLEMENTATIONSSTUFEN
Da nicht erwartet werden kann, dass alle Systeme komplexere Mechanismen wie Kombinationszeichen unterstützen können, spezifiziert ISO 10646 die folgenden drei Implementationsstufen für UCS:

Stufe 1
    Kombinationszeichen und Hangul Jamo-Zeichen (eine besondere, kompliziertere Kodierung der koreanischen Schrift, in der Hangul-Silben als zwei bis drei Unterzeichen kodiert werden) werden nicht unterstützt.

Stufe 2
    Wie Stufe 1, außer dass in einigen Schriften einige Kombinationszeichen nicht erlaubt sind (z.B. in Hebräisch, Arabisch, Devangari, Bengalisch, Gurmukhi, Gujarati, Oriya, Tamil, Telugo, Kannada, Malayalam, Thai und Lao).

Stufe 3
    Alle UCS Zeichen werden unterstützt.

Der vom Unicode Consortium veröffentlichte Unicode 1.1-Standard enthält exakt die UCS Basic Multilingual Plane auf Implementationsstufe 3, wie sie in ISO 10646 beschrieben ist. Unicode 1.1 fügt der Definition von ISO 10646 außerdem einige semantische Definitionen für einige Zeichen hinzu.

UNICODE UNTER LINUX
Unter Linux sollte im Moment nur BMP auf Implementationsstufe 1 benutzt werden, um die Komplexizität der Implementation von Kombinationszeichen gering zu halten. Die höheren Implementationsstufen sind eher für besondere Textverarbeitungsformate angebracht, jedoch nicht als universeller Systemzeichensatz. Der C-Typ wchar_t ist in Linux ein 16-Bit unsigned int, und seine Werte werden als UCS Stufe 1 BMP Codes interpretiert. Die "locale"-Einstellung bestimmt, ob die Zeichenkodierung des Systems beispielsweise UTF-8 oder ISO-8859-1 ist. Bibliotheksfunktionsn wie etwa wctomb, mbtowc oder wprintf können benutzt werden, um die internen wchar_t Zeichen und Strings in die Zeichenkodierung des Systems und zurück zu konvertieren.

PRIVATBEREICH
Im BMP werden dem Bereich 0xe000 bis 0xf8ff niemals Zeichen vom Standard zugewiesen werden - er ist für private Benutzung reserviert. Für die Linux-Gemeinde wurde dieser Privatbereich weiter unterteilt in den Bereich 0xe000 bis 0xefff, der vom Endbenutzer individuell benutzt werden kann, und dem Linux-Bereich von 0xf000 bix 0xf8ff, in dem koordiniert gemeinsame Erweiterungen aller Linux-User abgelegt werden. Die Registrierung der diesem Bereich zugeordneten Zeichen wird momentan von H. Peter Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. verwaltet. Sie enthält einige DEC VT100 Graphikzeichen, die in Unicode fehlen, ermöglicht direkten Zugriff auf die Zeichen im Fontbuffer der Console und enthält Zeichen, die von einigen weiteren Schriften wie Klingonisch benutzt werden.

LITERATUR

*   Information technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane. International Standard ISO 10646-1, International Organization for Standardization, Genf, 1993. Dies ist die offizielle Spezifikation von UCS. Ziemlich offiziell, ziemlich dick und auch ziemlich teuer. Informationen zur Bestellung gibt es auf http://www.iso.ch/.

*   The Unicode Standard - Worldwide Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991. Unicode 1.1.4 ist bereits verfügbar. Die Änderungen gegenüber dem 1.0er-Buch sind auf ftp://ftp.unicode.org/ erhältlich. Unicode 2.0 wird 1996 erneut als Buch veröffentlicht werden.

*   S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. Ein gutes Referenzbuch über die Programmiersprache C. Die vierte Auflage behandelt jetzt auch das Amendment 1 von 1994 zum ISO C-Standard (ISO/IEC 9899:1990), das eine große Anzahl neuer C-Bibliotheksfunktionen zum Umgang mit Zeichensätzen von mehr als 8 Bit pro Zeichen hinzufügt.

BUGS
Zum Zeitpunkt der Erstellung dieser Manpage war die Unterstützung von UCS durch die Linux libc weit entfernt davon, vollständig zu sein.

AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>

ÜBERSETZUNG
Johnny Teveßen <j.tevessen@gmx.de>

SIEHE AUCH
utf-8(7).